力扣sql简单篇练习(十)

力扣sql简单篇练习(十)

1 过去30天的用户活动 ||

1.1 题目内容

1.1.1 基本题目信息

力扣sql简单篇练习(十)_第1张图片

1.1.2 示例输入输出

a 示例输入

力扣sql简单篇练习(十)_第2张图片

b 示例输出

力扣sql简单篇练习(十)_第3张图片

1.2 示例sql语句

# 多少天内使用Date_SUB函数,具体用法是Date_SUB(初始日期,interval 变更的天数 day) ,正数找过去负数找未来
# 变更天数=多少天-if(是否包含初始日期,1,0),
# 没分组时默认将整个表当成一组
#注意有可能没有数据就要使用ifnull
SELECT ROUND(ifnull(avg(a.number),0),2) average_sessions_per_user
FROM
(
    SELECT user_id,count(distinct session_id) number
    FROM Activity
    WHERE activity_date  between DATE_SUB('2019-07-27',interval 29 day) and '2019-07-27'
    GROUP BY user_id
)a

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语句

# 用外连接,不满足的条件的字段用null值来填充
SELECT e.employee_id
FROM Employees e
LEFT JOIN Salaries s
ON e.employee_id=s.employee_id
WHERE s.salary is null
UNION
SELECT s.employee_id
FROM Employees e
RIGHT JOIN Salaries s
ON e.employee_id=s.employee_id
WHERE e.name is null
ORDER BY employee_id

2.3 运行截图

力扣sql简单篇练习(十)_第9张图片

3 学生们参加各科测试的次数

3.1 题目内容

3.1.1 基本题目信息1

力扣sql简单篇练习(十)_第10张图片

3.1.2 基本题目信息2

力扣sql简单篇练习(十)_第11张图片

3.1.3 示例输入输出

a 示例输入1

力扣sql简单篇练习(十)_第12张图片

b 示例输入2

力扣sql简单篇练习(十)_第13张图片

c 示例输出

力扣sql简单篇练习(十)_第14张图片

3.2 示例sql语句

# 使用笛卡尔积时(cross join)需要注意其连接条件
SELECT s.student_id,s.student_name,s.subject_name,IFNULL(e.number,0) attended_exams
FROM 
(
    SELECT s1.student_id,s1.student_name,s2.subject_name
    FROM Students s1
    CROSS JOIN Subjects s2
)s
LEFT JOIN
(
    SELECT student_id,subject_name,count(*) number
    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

3.3 运行截图

力扣sql简单篇练习(十)_第15张图片

你可能感兴趣的:(力扣简单篇练习(出现频率降序),leetcode,sql简单篇练习,mysql)