前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 SQL 实现数据分组与透视

利用 SQL 实现数据分组与透视

作者头像
张俊红
发布2021-06-25 19:55:30
2.3K0
发布2021-06-25 19:55:30
举报
文章被收录于专栏:张俊红张俊红

数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和、计数、平均值、标准差等,本文使用SQL对数据进行数据分组和数据透视,下面一起来学习。

普通分组

普通的数据分组这里使用的GROUP BY函数,同时使用COUNT函数进行计数。

代码语言:javascript
复制
#数据分组
SELECT Ssex,COUNT(SId) as '人数' from Student
GROUP BY Ssex;

分组筛选

如何对于分组后的结果进行筛选?这里不能使用WHERE函数,应该使用HAVING进行筛选,只要后面跟筛选条件即可

代码语言:javascript
复制
#数据分组
SELECT Ssex,COUNT(SId) as '人数' from Student
GROUP BY Ssex
HAVING COUNT(SId)>5;

CASE WHEN分组

CASE WHEN函数用来对数据进行判断和分组,下面的代码中我们对score列的值进行判断,score大于90为优秀,score大于80为良好,score大于70为中等, score大于60为及格,否则不及格,结果使用成绩分组字段进行标记。

代码语言:javascript
复制
#score字段分组
SELECT *,
CASE
WHEN score>90 THEN '优秀'
WHEN score>=80 AND score<90 THEN '良好'
WHEN score>=70 AND score<80 THEN '中等'
WHEN score>=60 AND score<70 THEN '及格'
ELSE '不及格' 
END AS '成绩分组'
FROM score;

单列分组

数据分组可以单列分组,也可以多列分组,对于单列分组,只需要在GROUP BY后面跟一个字段就可以。

代码语言:javascript
复制
#单列分类汇总
SELECT ssex,COUNT(sid) AS id_count FROM student
GROUP BY ssex
ORDER BY id_count DESC;

多列分组

而对多列数据分组,可以在GROUP BY后面跟多个字段,下面这条SQL语句同时根据课程号和学号进行分组,然后以分数和降序排列。

代码语言:javascript
复制
#多列分类汇总
SELECT CId,SId,SUM(score) AS score_sum FROM score
GROUP BY CId,SId
HAVING score_sum >160
ORDER BY score_sum DESC;

数据透视

在SQL中想要达到数据透视表的功能,需要GROUP BY与CASE WHEN结合使用,下面这条SQL语句可以计算不同分数段的人数,现用CASE WHEN对不同的分数段进行分类,然后,用GROUP BY分组,并且计数,实现数据透视功能。

代码语言:javascript
复制
#score字段分组
SELECT 
CASE
WHEN score>90 THEN '优秀'
WHEN score>=80 AND score<90 THEN '良好'
WHEN score>=70 AND score<80 THEN '中等'
WHEN score>=60 AND score<70 THEN '及格'
ELSE '不及格' END AS score_type,
COUNT(sid) as '人数'
FROM score
group by score_type
order by COUNT(sid) DESC;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 俊红的数据分析之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普通分组
  • 分组筛选
  • CASE WHEN分组
  • 单列分组
  • 多列分组
  • 数据透视
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档