【sql】一些简单的sql查询

来源:互联网 发布:淘宝能发货到台湾吗 编辑:程序博客网 时间:2024/05/16 12:04

1、统计重复记录数

查询重复人名的次数并列出

select count(姓名) as 重复次数,姓名from  某表

group by 姓名

order by 重复次数 asc

 首先,group by 姓名,可以将所有相同姓名的项集合在一起。

 然后,count(姓名),将姓名次数进行统计, 然后作为重复次数,

最后,order by通过重复次数排序,

 asc表示排序为由小到大,即递增顺序。

2、用一条sql语句查询出每门课程都大于80分的学生姓名,一个学生不止有一门课程

一开始看到这题,简单的写了出来并没有理解面试官的真正意图,理解能力真的是爆了。。


分析:重点是在“每门”这个词上,只要有一门不符合要求,就踢出

反向思考,找出课程小于80分(可以找出有一些课程小于80分,所有课程小于80分的学生)的学生姓名再排除这些学生剩余的就是所有课程都大于80分的学生姓名了,

name   kecheng   fenshu
张三     语文       81
张三     数学       75

张三    英语        75

李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90

select distinct name from aa where name not in (select distinct name from aa where fengshu<=80)

红色的意思是:

先把 distinct 去掉,查询的结果是分数小于80的所有学生姓名,结果是有两个张三,一个李四  

加上distinct之后,去重聚合一下,变成一个张三,一个李四

外层name not in 这个范围  有三个张三 再一distinct  就是一个张三

备注:distinct的用法:

作用于单列、多列、count联合使用   需要注意的是

.distinct必须放在开头

select id, distinct name from A;   --会提示错误,因为distinct必须放在开头

0 0
原创粉丝点击