数据分析进阶-SQL汇总查询
处理数据的过程中总免不了对数据进行加总、排序、去重,Excel里有这些功能或是提供相关的函数,那SQL能不能实现这些功能呢?答案是肯定的,这篇文章就将记录我练习使用SQL中汇总、排序功能的过程。 文章目录 汇总函数分组对查询结果做排序选出TopN条记录查询重复出现N次的记录 正式开始之前mssql 按关键字排序,我先放上我数据库里的表,以便核对结果: 学生表 成绩表 教师表 一、汇总函数 查询有多少名教师 查询有多少名学生选修过课程(对查询结果去重) 查询课程编号为'0002'的总成绩 二、分组 group by:SQL中实现分组的关键字,group by 常与汇总函数和having关键字一起出现。 运行顺序 ④select 性别,count(*) ①from student ②where 出生日期>'1993-01-01' ③group by 性别; 计算男女学生各有多少个 求平均分大于等于80分的课程 三、怎么排序 order by 列名1,列名2 ... ASC/DESC:SQL语句中对查询结果排序的关键字。它有两种选择:升序(ASC)or降序(DESC) 当by后面有多个列时,可以以多个列为标准做排序,顺序如下: ①:按列名1 升序/降序 排序 ②:如果存在有些行在列1中有相同的值,则以列名2为标准 升序/降序 排序 ... 直到所有的行都不能再进一步排序或是已经使用了order by之后所有的列来排序。 tips:应该给每一个列都指明是按什么顺序排序,否则对于新手来说容易弄混,例如order by 学号,姓名 DESC 实际上学号是按默认的(ASC)升序排列的,而不是和姓名一起用降序排列。 例如: tips:group by之后不要跟别名!因为group by运行之前,select还没有执行,mysql不知道有这个别名。 查询有学生挂科的课程,并且将结果从高到低排序 tips:order by 默认的排序顺序是ASC,即升序排序。除此之外,order by应该放在SQL语句的末尾,但是如果有limit,则放在limit之前。 四、节选查询结果 limit N:显示前N条记录 limit N,M:从第N+1条记录开始,显示M条记录。N从零开始。 例如: 取前四条记录 从第二条记录开始,取三条记录显示 有了limit,数据分析时取TopN的问题就迎刃而解啦! 五、查询重复出现N次的记录 使用group by对要统计重复情况的字段做分组,再用having子句求各个分组的重复次数,即having count(重复字段)>=N (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |