我正在使用PostgreSQL 9.1,并且具有以下数据结构:
A B
-------
1 a
1 a
1 b
1 c
1 c
1 c
1 d
2 e
2 e
我需要一个产生此结果的查询:
1 4 {{c,3},{a,2},{b,1},{d,1}}
2 1 {{e,2}}
A = 1,总共4行,A = 1,部分计数(3行带有c值,2行带有一个值,.....)
数组所需的排序基于每个组的计数(例如示例3,2,1,1)。
这应该可以解决问题:
SELECT a
, sum(ab_ct)::int AS ct_total
, count(*)::int AS ct_distinct_b
, array_agg(b || ', ' || ab_ct::text) AS b_arr
FROM (
SELECT a, b, count(*) AS ab_ct
FROM tbl
GROUP BY a, b
ORDER BY a, ab_ct DESC, b -- append "b" to break ties in the count
) t
GROUP BY a
ORDER BY ct_total DESC;
返回值:
ct_total
:总计数b
每a
。ct_distinct_b
:计数不同的b
每a
。b_arr
:b
正频率为的数组b
,按的频率排序b
。由总数有序b
每a
。
另外,您可以在PostgreSQL 9.0或更高版本ORDER BY
的聚合调用中使用一个子句。喜欢:
SELECT a
, sum(ab_ct)::int AS ct_total
, count(*)::int AS ct_distinct_b
, array_agg(b || ', ' || ab_ct::text **ORDER BY a, ab_ct DESC, b** ) AS b_arr
FROM (
SELECT a, b, count(*) AS ab_ct
FROM tbl
GROUP BY a, b
) t
GROUP BY a
ORDER BY ct_total DESC;
问题内容: 我有3张桌子。团队,选项,选项团队。 团队拥有一个TeamId,名称 拥有Option拥有OptionId,OptionGroup OptionTeam拥有TeamId,OptionId,OptionGroup 我想获得一个团队列表,以及额外的列,这些列指示每个组有多少个选项连接到每个团队。这是通过上面的查询完成的,但是我想用表Option中的OptionGroup值替换4,5,6,1
问题内容: 我试图传递包含键和值的数组。 键是列,值是要选择的值。 我试图编写一个函数,可以传递数组并将键和值用作表的列和值。例如: 我需要这样创建sql语句: 问题答案: 您可以构建一个简单的SQL Select,如下所示:
问题内容: 我正在尝试在java中创建一个通用数组-在其中我遇到了一些问题-我如何制作一个大小为6且里面有一个byte []和一个Integer的元组数组? 谢谢 问题答案: 好吧,您可以使用原始类型: 或者,您可以进行未经检查的转换: 或者,您也可以使用列表: 我建议改用列表。 在前两个选项之间进行选择,我建议您选择未经检查的转换,因为它将为您提供编译时检查。但是,如果将其他类型的元组放入其中,
我想知道你能在MySQL中创建一个数组变量吗?我知道你可以创建一个普通变量,比如so
问题内容: 背景 我想在sql select语句中动态重命名case语句。 例如: 我想要的输出是创建的列列表,其中标签作为与“ id”列不同的id。 但是,此变量 x.id 并不是动态输出值,而是我输出的是单列x.id。 例如: 表中的列… id — c1 ---- c2 1 ---- x1 — x2 2 ---- x2 ---- x3 3 ---- x4 ---- x5 在运行查询后,期望的列
我有一个下拉列表,由选择元素初始化。 如何创建mvvm绑定到选定的数据文本字段? 我没有数据源。 我必须绑定到选定的文本。例如:和 更新