力扣sql基础篇(六)

力扣sql基础篇(六)

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

1.1 题目内容

1.1.1 基本题目信息

力扣sql基础篇(六)_第1张图片

1.1.2 示例输入输出

a 输入示例

力扣sql基础篇(六)_第2张图片

b 输出示例

力扣sql基础篇(六)_第3张图片

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 运行截图

力扣sql基础篇(六)_第4张图片

2 可以放心投资的国家

2.1 题目内容

2.1.1 基本题目信息1

力扣sql基础篇(六)_第5张图片

2.1.2 基本题目信息2

力扣sql基础篇(六)_第6张图片

2.1.3 示例输入输出

a 示例输入

力扣sql基础篇(六)_第7张图片

b 示例输出

力扣sql基础篇(六)_第8张图片

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 运行截图

力扣sql基础篇(六)_第9张图片

3 部门工资最高的员工

3.1 题目内容

3.1.1 基本题目信息

力扣sql基础篇(六)_第10张图片

3.1.2 示例输入输出

力扣sql基础篇(六)_第11张图片

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 运行截图

力扣sql基础篇(六)_第12张图片

你可能感兴趣的:(力扣sql基础练习,leetcode,sql基础练习,mysql)