sql server按数字排序_SQL(Mac英语版本)-汇总分析+sqlzoo练习题

内容:

1. 汇总分析

2. 分组

3. 对分组结果指定条件

4. 用sql解决业务问题

5. 对查询结果排序

6. 如何看懂报错信息

7.练习题:sqlzoo


1. 汇总分析

0a5f17653766a851c8f968555f2cfc86.png
  • 注意⚠️
  • count函数得出的是除去空值null的行数。如果要包括空值后的行数,用函数count(*)
  • 所有的汇总函数,如果输入的是列名,那么在计算前,会将空值排除在外,才进行计算。
  • sumavg函数只能对数值类型的列计算
  • Countmaxmin能对任何数据类型进行计算。

2c58cabe108d83984d56dcce533d674c.png
教师表(teacher)

742096a068cae50b9c2e6d488d3f5c3a.png
  • 注意⚠️:区分好空值null,字符串叫"null" 和 ‘ ’。空值null是没被定义的值,所以无法参与计算,而字符串叫"null"和‘ ’可以参与计算。教师号为003对应的null是空值null,所以没有参与count函数的计算,而教师号为004对应的是‘ ’, 参与了count函数的计算。

85ba7ff64d269105fed8b77b3e151d99.png
成绩表(score)

72a432f683cdaea31e7fc360e86ad583.png

ed1063d1f57064684ae097616e0a0e13.png

9b4fd5e06d5dee8f695784ad3e5336c2.png
  • 注意⚠️如果我们不想函数计算重复值,则用distinct函数。

28467f0a64cfc69143ecb8544a14cc03.png
学生表(student)

b39318d79d5beb7d4fb2b66428f38d6c.png

-----------------------------------------练习---------------------------------------------

85ba7ff64d269105fed8b77b3e151d99.png
成绩表(score)
  1. 查询课程编号为“0002”的总成绩

c0384298cf1d2659f61f4d4dd14886aa.png

2. 查询选了课程的学生人数

82665cd8a0e4b84a87035c7b6130a3e6.png

2. 分组

group by 某个条件
  • sql的运行顺序

08acd751470a52a14730229f26fd383e.png
  • 注意⚠️:先按照书写的顺序运行篮筐里的子句,之后再运行select子句。

-----------------------------------------练习---------------------------------------------

85ba7ff64d269105fed8b77b3e151d99.png
成绩表(score)

1.查询各科(每科)成绩最高和最低分(按科目分组)

3fd8bad706a43e6174e9b76f20c3d0ea.png

2.查询每门课程被选修的学生数(按课程分组)

a96cd66195281d9e4da9db30d8c280eb.png

3.查询男生,女生人数(按性别分组)

28467f0a64cfc69143ecb8544a14cc03.png
学生表(student)

73f63b7c2e611296ab4061873777b0c5.png
  • 小结:如果问题里出现每,如每个,每门的字眼,即代表要分层,要group by

3. 对分组结果指定条件

having 

sql 运行顺序:

eb9c2ff5603351cca41c4f5896493dde.png
  • 注意⚠️:先按照书写的顺序运行篮筐里的子句,之后再运行select子句。

-----------------------------------------练习---------------------------------------------

  1. 查询平均成绩大于60分学生的学号和平均成绩

85ba7ff64d269105fed8b77b3e151d99.png
成绩单(score)

13cbba43fe6a5688e321b4cd06a2667a.png

b810dd42af6ed47089ab32e4715596b4.png

2. 查询至少选修两门课程的学生学号

19aabf16c8b30748ebc43fefa14663fb.png
  1. 查询同名同姓学生名单并统计同名人数

7fef2eb5df293e24e9a82e381d4d1223.png

4. 用sql解决业务问题

  • 如何用sql解决业务问题?

解决问题的思路:1.先把问题翻译成自己能懂的大白话,2.写出解题思路 3.写出对应的sql子句

85ba7ff64d269105fed8b77b3e151d99.png
成绩表(score)

? 计算各科的平均成绩

* 各科=每门科目= group by 课程号

a51792816a2e06355bbf25a0912fd84c.png

? 计算各科的平均成绩并且平均成绩大于等于80分

832a84e8dca0f61e45456dd401f814f5.png

5. 对查询结果排序

-- 降序(从大到小)
order by desc

-- 升序(从小到大)
order by asc

8f0836199e5c7b55eb8371efb65cdec7.png
  • 指定多个排序列名
order by 列名1 asc, 列名2 desc;
  • 空值(null)的排序
order by 列名
  • 从查询结果中取出指定行
--limit后加数字,如果是limit 2 即为从查询结果中取出前两行数据
limit 

9e1c955e62840617b69a8bfc9b8b0df9.png

-----------------------------------------练习---------------------------------------------

  1. 查询不及格的课程并按课程号从大到小排列

85ba7ff64d269105fed8b77b3e151d99.png

9858c43e27eb1fc1249c8870138655be.png

2. 查询每门课程的平均成绩,结果按平均成绩升序排序。平均成绩相同时,按课程号降序排列。

思路:每门课程(group by), 升序排序(order by)

e3aa2048f4ce9b062ced3ab93e979167.png

6. 如何看懂报错信息

13b9c68bb34431e8ed7e8c68fa9ed0f8.png
  • 之所以出现错误是因为having子句先运行,之后再运行select子句。在运行having子句时,平均成绩还未被建立。

1d24c35896e2e49596b175a58c1b2414.png

*之所以出现错误,是因为where子句中不可使用汇总函数。

e1d2f8ec76c946e3e8fa55398804b0e8.png
  • 这里的数据类型是字符串,并非数字

6. 练习题:sqlzoo

SQLZOO​sqlzoo.net
  1. SELECT from Nobel
SELECT from Nobel Tutorial​sqlzoo.net

102b1cebd89bdf42bae306921ff01399.png

b4bf217cfc5e9e019c6ca0270b34df74.png

c6ae0ba3e3b8237bc95cd4664bc9e8e3.png

db5516a85895205d9d054e0a3e976465.png

03818c67168cf293fca8f64510d9a720.png

4f40ec9a537afe436e6dc877a95d327d.png

5e469b7dacb36385633234c061ae089d.png

b64d413422592c4ee5e05651d1a17ba9.png

40299d43c53127f15d857019418badd5.png

defdd8d91ab4b40978525724420018e3.png

ad43ca772ba60847165e342e46140efe.png

632926046aff9c977410a88cc7a0ca55.png

*单引号里的单引号要用两个单引号代替

9592376432b0accf2205f3dc35719a17.png

1d9fe5de2213dfd319c7cafb5f1033be.png

2. SUM and COUNT

SUM and COUNT - SQLZOO​sqlzoo.net

f512028b120f10077dbeb66d97b19620.png

6634aefade3953a0a5dc9dbd507c4796.png

f89f2336642880fd2d79da6efa56934a.png

b7e04afb737ad773d17abc3a5e257380.png

7a1c563c0b0417af2fcc1983fb0e1a53.png

5efe79a6d31b904fbe6ae54795bf055c.png

3ff214e0f3a4dd7b8a8bf6c089c914d8.png

48eb118051943c983339a6421baf4955.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值