按计数 sql 分组
Posted
技术标签:
【中文标题】按计数 sql 分组【英文标题】:group by count 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
有什么办法不使用新表?
【问题讨论】:
【参考方案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 ``` 它它不起作用以上是关于按计数 sql 分组的主要内容,如果未能解决你的问题,请参考以下文章