SQL笔记-分组后统计每组数据数量

今天在写sql的时候遇到了一个问题,特此记录:

1.首先我想做的是先查询出来有几个type,再统计出每个type下的用户数
2.通过查询语句得出,type 有5种,分别是1,2,3,4,5,如图:
SQL笔记-分组后统计每组数据数量_第1张图片
3.但是当统计type下用户数量的时候,遇到了问题,开始我是这么写的(因为当时脑子里只想到了count,而且用的也不多),如图:
SQL笔记-分组后统计每组数据数量_第2张图片
但这只有type1的,显然不行,我要1-5的,如果写5条查询语句,岂不是太笨了
4.查找方法,看到网上说GROUP_CONCAT这个方法结合GROUP_BY及聚合函数,在分组后,GROUP_CONCAT()可以存放每一组的元素信息,且可以统计个数,但是这个是适用于mysql数据库的,我们用的是pgsql,继续查找与其类似的可应用函数,找到了array_agg,sql格式如下:

SELECT type,array_agg(用户ID), COUNT(*) from 表名 GROUP BY type 

问题解决,如下图(type3没有是因为3的count是0,未显示):
SQL笔记-分组后统计每组数据数量_第3张图片
5.在整理笔记的过程中发现。。其实这样也行,其中count(用户ID)可以改为count(*),只是想比之下少了一列:
SQL笔记-分组后统计每组数据数量_第4张图片
6.总之,还是学习到了,文档地址如下,一起学习:
https://www.cnblogs.com/friday69/p/9389720.html

你可能感兴趣的:(SQL笔记-分组后统计每组数据数量)