zoukankan      html  css  js  c++  java
  • SQL的分组与透视

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

    1)普通分组

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

    #数据分组
    SELECT Ssex,COUNT(SId) as '人数' from Student
    GROUP BY Ssex;
    

     

     2)分组筛选

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

    #数据分组
    SELECT Ssex,COUNT(SId) as '人数' from Student
    GROUP BY Ssex
    HAVING COUNT(SId)>5;
    

    3)CASE WHEN分组

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

    #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;
    

     

     4)单列分组

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

    #单列分类汇总
    SELECT ssex,COUNT(sid) AS id_count FROM student
    GROUP BY ssex
    ORDER BY id_count DESC;
    

     

     5)多列分组

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

    #多列分类汇总
    SELECT CId,SId,SUM(score) AS score_sum FROM score
    GROUP BY CId,SId
    HAVING score_sum >160
    ORDER BY score_sum DESC;
    

     

     6)数据透视

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

    #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;
    

     

     上述内容引用自微信公众号:大话数据分析,大家如果感兴趣请去添加关注。

  • 相关阅读:
    Ubuntu环境下mysql常见的操作
    Ubuntu 下 Galera cluster for MySQL 集群安装
    Linux如何查看进程、杀死进程、启动进程等常用命令
    Ubuntu16.04配置静态IP地址
    Linux软件包管理之源码包、脚本安装包
    Linux软件包管理之yum在线管理
    Linux软件包管理之RPM命令
    Linux文本编辑器vim
    Linux常用命令之网络和关机重启命令
    Linux常用命令之压缩和解压缩命令
  • 原文地址:https://www.cnblogs.com/zhuozige/p/14853889.html
Copyright © 2011-2022 走看看