力扣sql基础篇(六)

力扣sql基础篇(六)

1 学生参加各科测试的次数

1.1 题目内容

1.1.1 基本题目信息

在这里插入图片描述

1.1.2 示例输入输出
a 输入示例

在这里插入图片描述

b 输出示例

在这里插入图片描述

1.2 示例sql语句

# 无论考没考试都要该科目这栏且无连接字段,就可以考虑笛卡尔积了
SELECT  s.student_id,s.student_name,s.subject_name,IFNULL(e.num,0) attended_exams
FROM
(
  SELECT *
  FROM Students
  CROSS JOIN Subjects
)s
LEFT JOIN
(
    SELECT student_id,subject_name,count(*) num
    FROM Examinations
    GROUP BY student_id,subject_name
)e
ON s.student_id=e.student_id AND s.subject_name=e.subject_name
ORDER BY s.student_id asc,s.subject_name asc;

1.3 运行截图

在这里插入图片描述

2 可以放心投资的国家

2.1 题目内容

2.1.1 基本题目信息1

在这里插入图片描述

2.1.2 基本题目信息2

在这里插入图片描述

2.1.3 示例输入输出
a 示例输入

在这里插入图片描述

b 示例输出

在这里插入图片描述

2.2 示例sql语句

# 先求出每个国家的平均通话时长,在求出全球通话时长,然后把两者进行比较即可
#substring函数从1开始,
#全球通话时长是无论是接听者还是打电话的人都需要算进去
SELECT c1.name country
FROM Country c1
INNER JOIN Person p
ON c1.country_code=SUBSTRING(p.phone_number,1,3)
LEFT JOIN
(
    SELECT caller_id cid,duration
    FROM Calls
    UNION All
    SELECT callee_id cid,duration
    FROM Calls
)c2
ON p.id=c2.cid
GROUP BY c1.name
HAVING avg(c2.duration)>(SELECT avg(duration) FROM Calls);

2.3 运行截图

在这里插入图片描述

3 部门工资最高的员工

3.1 题目内容

3.1.1 基本题目信息

在这里插入图片描述

3.1.2 示例输入输出

在这里插入图片描述

3.2 示例sql语句

SELECT e1.department,e1.employee,e1.salary
FROM
(
    SELECT e.name Employee,d.name Department,e.Salary,rank() over(partition by e.departmentId ORDER BY e.salary desc) rk
    FROM Employee e
    INNER JOIN Department d
    ON e.departmentId=d.id
)e1
WHERE e1.rk=1;

3.3 运行截图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值