数据分析-----SQL(续)

哈喽~~大家好,今天与大家分享的是基础SQL语句!!

表名:course
在这里插入图片描述
表名:score
在这里插入图片描述

表名:student
在这里插入图片描述

通过将以上三个表连接在一起,可以提取出自己有用的信息。(以下用到了嵌套语句)

找出学生的成绩比课程0002的全部成绩中任意一个高?

SELECT 学号,成绩      ##查找学号,成绩
from  score  ##score表
WHERE 成绩 >ANY(
                SELECT `成绩`
                 from score
                  where 课程号='0002');

找出学生的成绩比课程0002的全部成绩里的都高?

SELECT a.学号,AVG(b.成绩)AS 平均成绩
FROM student as a
LEFT JOIN score as b
on a.`学号`=b.`学号`
GROUP BY a.`学号`
HAVING avg(`成绩`)>'85'

下面用到case表达式,在score表格后增加一列,列名为“是否及格”,若成绩大于等于60,为及格,若成绩小于60,为不及格。

SELECT 学号,课程号,`成绩`,
(CASE WHEN 成绩>=60 THEN '及格'
WHEN 成绩<60 THEN '不及格'
ELSE NULL
END
)AS 是否及格
FROM score;

在score表格后增加一列,列名为“不及格人数”,根据课程号进行分组,若成绩大于等于60,为及格,写为1,若成绩小于60,为不及格,写为0,利用求和公式,分别得出不及格人数。

SELECT 课程号,SUM(CASE WHEN 成绩 >=60 THEN 1 ELSE 0 END)AS 及格人数,SUM(CASE WHEN 成绩 <60 THEN 1 ELSE 0
END )AS 不及格人数
FROM score
GROUP BY 课程号;##按照课程号分组

通配符

%:可匹配恣意类型和长度的字符。
下划线_:匹配单个字符,它常用来约束表达式的字符长度。
方括号[]:指定一个字符、字符串。
如下:

SELECT *
FROM student
WHERE 姓名 LIKE '小%';##以“小”打头
SELECT *
FROM student
WHERE 姓名 LIKE '%小';
SELECT *
FROM student
WHERE 姓名 LIKE '%小%';
SELECT *
FROM student
WHERE 姓名 LIKE '%王__';

以上是我今天分享的内容!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值