记录sql查询语句

记录:简单查询语句

有个学生表stu (name,xueke,chengji)

1、SELECT * FROM stu  #查询所有数据

2、SELECT * FROM stu  where NAME ='张1'    #查询name是张1的数据

#查询name张1和chengji大于80的数据

3、SELECT *FROM stu  where NAME ='张1' andchengji >=80 

4、SELECT *FROM stu  where NAME ='张1' ORDER BYchengji   #按成绩正序排序,默认是正序

5、SELECT *FROM stu  where NAME ='张1' ORDER BYchengji ASC  #ASC正序排序

6、SELECT * FROM stu  where NAME ='张1' ORDER BY chengjiDESC  #DESC倒序排序

7、Group by---Group By与聚合函数

[GROUP BY先从字面上来理解,GROUP表示分组,BY后面写字段名,表示根据哪个字段进行分组,例如Excel,GROUP BY比较类似Excel里面的透视表。

GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等.]

举例:按name进行分组,取成绩总和,平均值,最大值,最小值,

7.1、SELECTname,SUM(chengji)  as sum_chengji from stu  GROUP BY name

7.2、SELECTname,AVG(chengji)  as avg_chengji from stu  GROUP BY name

7.3、SELECTname,Max(chengji)  as max_chengji from stu  GROUP BY name

7.4、SELECTname,min(chengji)  as min_chengji from stu  GROUP BY name

7.5、SELECTname,count(chengji)  as count_chengjifrom stu  GROUP BY name

按学科分组,取平均值

查询每科平均分

SELECT xueke,avg(chengji)  as avg_全班平均分from stu  GROUP BY xueke

#查询所有学科成绩大于等于70的学生

8、SELECT name from stu  GROUP BY name HAVING MIN(chengji) >=70

或者

SELECT DISTINCT A.name from stu  A WHERE A.name not in (SELECT DISTINCT s.namefrom xuesheng s where s.chengji <70)

[思路:采用逆向思维---求三门成绩都大于80的人,可以先查出有成绩小于80的人,再除去这些人。办法:先查出有成绩小于80的人的name,然后再用not in 或not exists 方法。此方法采用逆向思维,能快速写出高效且简单的 SQL语句。]

特意,必须有3条学科记录的才行

SELECT name from stu  GROUPBY name HAVING MIN(chengji) >=70 and count(1)=3

9、计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)

select name,SUM(chengji) as sum_chengji fromstu  GROUPBY name ORDER BY sum_chengji DESC

10、查询总分200分以上的倒序排名

SELECTname,sum(chengji) from stu  GROUP BY namehaving sum(chengji) >200 order by sum(chengji) Desc

11、查询每个学生成绩大于80分各有几门

select name,count(*) from stu  where chengji >=80  GROUP by name

12、列出至少有两门课程大于等于90分的学生

select name,count(*) from stu  where chengji >=80  GROUP by name HAVING count(*) >2

13、列出平均成绩大于等于80分的,并且语文课必须在90分以上的学生

select namefrom stu  where name in (SELECT name FROMstu where xueke='语文' and chengji>=90)  GROUP by name HAVING avg(chengji)>=80

 

参考文档:

https://blog.csdn.net/sinat_21274091/article/details/51867943

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值