没有特定的要求,按简单,中等,困难三种程度各出一道SQL题目
时间: 2023-08-24 20:05:40 浏览: 161
### 回答1:
简单: 从一个名为"employees"的表中查询所有员工的姓名和工资。
```
SELECT name, salary FROM employees;
```
中等: 从一个名为"orders"的表中查询所有金额大于1000美元且订单日期在2019年1月1日之后的订单。
```
SELECT * FROM orders
WHERE amount > 1000 AND order_date > '2019-01-01';
```
困难: 从一个名为"sales"的表中查询每个销售人员的销售总额(按照姓名分组)并按照总销售额从高到低排序。
```
SELECT name, SUM(amount) as total_sales
FROM sales
GROUP BY name
ORDER BY total_sales DESC;
```
### 回答2:
简单题目:求某表中的最大值
表名:students
字段名:student_id, name, age
问题:编写一条SQL语句,查询出年龄最大的学生的信息。
答案:
SELECT *
FROM students
WHERE age = (SELECT MAX(age) FROM students)
中等题目:统计某表中不同年龄段学生的人数
表名:students
字段名:student_id, name, age
问题:编写一条SQL语句,查询出不同年龄段学生的人数,按年龄段升序排列。
答案:
SELECT age, COUNT(*) AS num_of_students
FROM students
GROUP BY age
ORDER BY age ASC
困难题目:查询某表中连续出勤的学生
表名:attendance
字段名:student_id, date
问题:编写一条SQL语句,查询连续出勤天数大于等于5天的学生。
答案:
SELECT t1.student_id
FROM (SELECT student_id,
date,
ROW_NUMBER() OVER (PARTITION BY student_id ORDER BY date) AS consecutive_days
FROM attendance) AS t1
JOIN (SELECT student_id,
date,
ROW_NUMBER() OVER (PARTITION BY student_id ORDER BY date) AS consecutive_days
FROM attendance) AS t2
ON t1.student_id = t2.student_id AND t1.consecutive_days = t2.consecutive_days -1
GROUP BY t1.student_id
HAVING COUNT(*) >= 4
### 回答3:
简单:查询一个表中所有员工的姓名和年龄。
答案:
SELECT 姓名, 年龄 FROM 员工表;
中等:查询一个表中员工的总数,并按照性别分组显示每个性别的员工数。
答案:
SELECT 性别, COUNT(*) AS 员工数 FROM 员工表 GROUP BY 性别;
困难:查询一个表中每个部门的平均工资,并将结果按照平均工资降序排序。
答案:
SELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门 ORDER BY 平均工资 DESC;
阅读全文