sql - SQL:如何按列分组而不爆炸表中的聚合值
问题描述
如何在不爆炸聚合值的情况下转换table_1
为table_2
,如下所示:
-- table_1
a b
aaa 1
bbb 2
aaa 3
ccc 4
ccc 4
bbb 1
ddd 4
bbb 2
aaa 3
-- table_2
a b count
aaa 1 1
bbb 2 2
aaa 3 2
ccc 4 2
ccc 4 2
bbb 1 1
ddd 4 1
bbb 2 2
aaa 3 2
count
column 是列的计数,a
我b
只知道如何获取count
不消耗的值,如下面的代码:
SELECT COUNT(*)
FROM table_1
GROUP BY a, b
-- result
a b count
aaa 1 1
bbb 2 2
aaa 3 2
ccc 4 2
bbb 1 1
ddd 4 1
谁能帮帮我?
提前致谢。
解决方案
你想要一个窗口函数:
select t1.*,
count(*) over (partition by a, b) as count
from table_1 t1;
create table as table_2
如果要table_2
使用这些计数创建,可以使用。
推荐阅读
- c++ - 用来自另一个进程的数据填充分配的内存
- javascript - 如何创建一个由数组中的函数组成的大型函数,并与逻辑 AND 连接?
- python - 在 json 文件中从字典中添加列表值
- javascript - 添加活动时,Google 公共日历 API 返回错误 401 login required
- c# - 如何使用dynamic-linq通过表达式“前缀”顺序
- python - 将字典列表解压缩到 Pandas 中的单独列中
- python - 数据框列复制导致 Nan
- prolog - prolog中的持续时间比较
- r - 将一个数据帧中的值替换为另一个数据帧
- ruby - Ruby 命令在 Windows Ruby 命令提示符中失败,并显示“无法加载此类文件”