【问题标题】:group by count sql按计数 sql 分组
【发布时间】:2021-09-30 09:39:23
【问题描述】:

我有一个脚本

SELECT  customer_id, COUNT(*)
FROM devices 
GROUP BY customer_id
ORDER BY 2 desc;

结果是

customer_id      count
1234              8
4567              7
8910              7
1112              7
1314              5
1516              5

但我期待的是

devices      customer
8              1
7              3
5              2

有什么办法不使用新表?

【问题讨论】:

    标签: sql oracle metabase


    【解决方案1】:

    使用您当前的查询作为另一个查询的来源:

    with temp as
      -- this is your current query
      (select customer_id, 
              count(*) cnt
       from devices
       group by customer_id
      )
    select cnt as devices, 
           count(*) as customer
    from temp
    group by cnt;
    

    【讨论】:

      【解决方案2】:

      count(*) 的通常用途是找出许多行已通过 group 函数聚合。想让你蚂蚁做的是在第二次选择中汇总你的结果,然后再次询问 count(*) 以获得你描述的结果。

      【讨论】:

      • 我试过 ``` SELECT customer_id, COUNT(1) FROM ( SELECT customer_id, COUNT(*) FROM devices GROUP BY customer_id ORDER BY 2 desc; ) devices GROUP BY customer_id ``` 它它不起作用
      猜你喜欢
      • 2015-05-29
      • 2010-11-30
      • 1970-01-01
      • 2016-08-15
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多