e通网网站建设,一级做a爱免费网站,专业的扬州网站建设,海口网站制作【题目】编写一个SQL查询#xff0c;查找学生表中所有重复的学生名。【解题思路】1.看到“找重复”的关键字眼#xff0c;首先要用分组函数#xff08;group by#xff09;#xff0c;再用聚合函数中的计数函数count()给姓名列计数。2. 分组汇总后#xff0c;生成了一个如…【题目】编写一个SQL查询查找学生表中所有重复的学生名。【解题思路】1.看到“找重复”的关键字眼首先要用分组函数group by再用聚合函数中的计数函数count()给姓名列计数。2. 分组汇总后生成了一个如下的表。从这个表里选出计数大于1的姓名就是重复的姓名。【解题步骤】方法一1创建一个辅助表将姓名列进行行分组汇总select 姓名, count(姓名) as 计数
from 学生表
group by 姓名;2选出辅助表中计数大于1的姓名select 姓名 from 辅助表
where 计数 1;3结合前两步将“创建辅助表”的步骤放入子查询select 姓名 from
(select 姓名, count(姓名) as 计数from 学生表group by 姓名
) as 辅助表
where 计数 1;结果方法二这时候有的同学可能会想为什么要这么麻烦创建一个子查询不能用这个语句将count放到where字句中直接得出答案吗select 姓名
from 学生表
group by 姓名
where count(姓名) 1;如果我们运行下这个sql语句会报下面的错误问题出在哪里呢前面提到聚合函数countwhere字句无法与聚合函数一起使用。因为where子句的运行顺序排在第二运行到where时表还没有被分组。如果不清楚可以系统看下我之前的课程《从零学会SQL汇总分析》如果要对分组查询的结果进行筛选可以使用having子句。所以这道题的最优方法如下select 姓名
from 学生表
group by 姓名
having count(姓名) 1;【本题考点】1考察思路有两种解题方法但是使用having语句的方法更高效。2考察对having语句的掌握很多人会把聚合函数写到where子句中。3熟记SQL子句的书写顺序和运行顺序。【举一反三】本题也可以拓展为找出重复出现n次的数据。只需要改变having语句中的条件即可select 列名
from 表名
group by 列名
having count(列名) n;推荐如何提升你的分析技能实现升职加薪