sql 题 求2021年4月和5月销售额均在前3名的销售员
时间: 2024-03-03 08:47:23 浏览: 10
假设你有以下两个表:
表1:sales
| 销售员 | 日期 | 销售额 |
| ------ | ---------- | ------ |
| A | 2021-04-01 | 100 |
| B | 2021-04-01 | 200 |
| C | 2021-04-01 | 150 |
| A | 2021-04-02 | 120 |
| B | 2021-04-02 | 180 |
| C | 2021-04-02 | 130 |
| A | 2021-05-01 | 150 |
| B | 2021-05-01 | 210 |
| C | 2021-05-01 | 190 |
| A | 2021-05-02 | 160 |
| B | 2021-05-02 | 220 |
| C | 2021-05-02 | 200 |
表2:salesmen
| 销售员 |
| ------ |
| A |
| B |
| C |
| D |
以下是 SQL 查询语句:
```
SELECT s.销售员
FROM sales s
WHERE s.日期 >= '2021-04-01' AND s.日期 <= '2021-05-31'
GROUP BY s.销售员
HAVING AVG(s.销售额) IN (
SELECT DISTINCT TOP 3 AVG(s.销售额)
FROM sales s
WHERE s.日期 >= '2021-04-01' AND s.日期 <= '2021-05-31'
GROUP BY s.销售员
ORDER BY AVG(s.销售额) DESC
)
```
解释:
首先,我们使用 WHERE 子句筛选出 2021 年 4 月和 5 月的数据。
然后,使用 GROUP BY 和 AVG 函数计算每个销售员在这段时间内的平均销售额。
接着,使用 HAVING 子句过滤出平均销售额在前 3 名的销售员。这里使用了子查询来获取前 3 名的平均销售额。
最后,SELECT 子句返回符合条件的销售员。