【问题标题】:SQL: How to group by column without exploding aggregating value in the tableSQL:如何按列分组而不爆炸表中的聚合值
【发布时间】:2021-11-15 20:53:40
【问题描述】:

如何在不爆炸聚合值的情况下将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 列是 ab 列的计数,我只知道如何获取 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

谁能帮帮我?
提前致谢。

【问题讨论】:

    标签: sql group-by aggregate aggregate-functions


    【解决方案1】:

    你想要一个窗口函数:

    select t1.*,
           count(*) over (partition by a, b) as count
    from table_1 t1;
    

    如果你想用这些计数创建table_2,你可以使用create table as table_2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2018-05-22
      相关资源
      最近更新 更多