力扣
1. 删除重复的电子邮箱
表: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| email | varchar |
+-------------+---------+
id是该表的主键列。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。
编写一个 SQL 删除语句 来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。
以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)
查询结果格式如下所示。
示例 1:
输入:
Person 表:
+----+------------------+
| id | email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+
输出:
+----+------------------+
| id | email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
解释: john@example.com重复两次。我们保留最小的Id = 1。
题解
2. 按日期分组销售产品
表 Activities:
+-------------+---------+
| 列名 | 类型 |
+-------------+---------+
| sell_date | date |
| product | varchar |
+-------------+---------+
此表没有主键,它可能包含重复项。
此表的每一行都包含产品名称和在市场上销售的日期。
编写一个 SQL 查询来查找每个日期、销售的不同产品的数量及其名称。
每个日期的销售产品名称应按词典序排列。
返回按 sell_date 排序的结果表。
查询结果格式如下例所示。
示例 1:
输入:
Activities 表:
+------------+-------------+
| sell_date | product |
+------------+-------------+
| 2020-05-30 | Headphone |
| 2020-06-01 | Pencil |
| 2020-06-02 | Mask |
| 2020-05-30 | Basketball |
| 2020-06-01 | Bible |
| 2020-06-02 | Mask |
| 2020-05-30 | T-Shirt |
+------------+-------------+
输出:
+------------+----------+------------------------------+
| sell_date | num_sold | products |
+------------+----------+------------------------------+
| 2020-05-30 | 3 | Basketball,Headphone,T-shirt |
| 2020-06-01 | 2 | Bible,Pencil |
| 2020-06-02 | 1 | Mask |
+------------+----------+------------------------------+
解释:
对于2020-05-30,出售的物品是 (Headphone, Basketball, T-shirt),按词典序排列,并用逗号 ',' 分隔。
对于2020-06-01,出售的物品是 (Pencil, Bible),按词典序排列,并用逗号分隔。
对于2020-06-02,出售的物品是 (Mask),只需返回该物品名。
题解
丢失信息的雇员
表: Employees
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| employee_id | int |
| name | varchar |
+-------------+---------+
employee_id 是这个表的主键。
每一行表示雇员的id 和他的姓名。
表: Salaries
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| employee_id | int |
| salary | int |
+-------------+---------+
employee_id is 这个表的主键。
每一行表示雇员的id 和他的薪水。
写出一个查询语句,找到所有 丢失信息 的雇员id。当满足下面一个条件时,就被认为是雇员的信息丢失:
- 雇员的 姓名 丢失了,或者
- 雇员的 薪水信息 丢失了,或者
返回这些雇员的id employee_id , 从小到大排序 。
查询结果格式如下面的例子所示。
示例 1:
输入:
Employees table:
+-------------+----------+
| employee_id | name |
+-------------+----------+
| 2 | Crew |
| 4 | Haven |
| 5 | Kristian |
+-------------+----------+
Salaries table:
+-------------+--------+
| employee_id | salary |
+-------------+--------+
| 5 | 76071 |
| 1 | 22517 |
| 4 | 63539 |
+-------------+--------+
输出:
+-------------+
| employee_id |
+-------------+
| 1 |
| 2 |
+-------------+
解释:
雇员1,2,4,5 都工作在这个公司。
1号雇员的姓名丢失了。
2号雇员的薪水信息丢失了。
题解
CSDN 题目
各个表的基本信息
题型
1. 查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号
2. 查询平均成绩大于60分的学生的学号和平均成绩
3. 查询所有学生的学号、姓名、选课数、总成绩
4. 查询姓“猴”的老师的个数
5. 查询没学过“张三”老师课的学生的学号、姓名
6. 查询学过“张三”老师所教的所有课的同学的学号、姓名
7. 查询学过编号为“01”的课程并且也学过编号为“02”的课程的学生的学号、姓名
8. 查询课程编号为“02”的总成绩
9. 查询学生每门课程成绩均小于60分的学生的学号、姓名
10. 查询没有学全所有课的学生的学号、姓名
11. 查询至少有一门课与学号为“01”的学生所学课程相同的学生的学号和姓名
12. 查询和“01”号同学所学课程完全相同的其他同学的学号
13. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
14. 检索”01”课程分数小于60,按分数降序排列的学生信息
15. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
16. 查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
17. 查询学生的总成绩并进行排名
18. 查询每个老师所教课程平均分从高到低显示以课程为主体来求平均分
19. 使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称
20. 查询学生平均成绩及其名次
21. 查询每门课程被选修的学生数
22. 查询出只有两门课程的学生的学号和姓名
23. 查询男生、女生人数
24. 查询名字中含有”风”字的学生信息
25. 查询1990年出生的学生名单
26. 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
27. 查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
28. 查询课程名称为”数学”,且分数低于60的学生姓名和分数
29. 查询所有学生的课程及分数情况
30. 查询任何一门课程成绩在70分以上的姓名、课程名称和分数
31. 查询不及格的课程并按课程号从大到小排列
32. 查询课程编号为03且课程成绩在80分以上的学生的学号和姓名
33. 查询选修“张三”老师所授课程的学生中成绩最高的学生姓名及其成绩
34. 查询 2 门及以上课程成绩相同的学生的学生编号、课程编号、学生成绩
35. 查询各学生的年龄
36. 查询选修了全部课程的学生
37. 查询下周过生日的学生
38. 查找本月过生日的人
— 感谢阅读 —
一起交流
分享你的思考,让讨论更进一步。