子查询(一)
本课属于 Coddy SQL 学习旅程的“基础知识”单元。第 38 课,共 72 课。
子查询可以让我们将多个查询合并为一个。例如,看看下面的 employees 表:
| id | salary |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
| 4 | 13 |
| 5 | 28 |
我们需要使用子查询,因为不能直接使用 WHERE salary > AVG(salary),因为像 AVG() 这样的聚合函数不能用于 WHERE 子句,只能在数据分组后使用。
SELECT id, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);子查询可以帮助我们找出薪水高于公司平均水平的员工:先计算平均薪水(内层查询),再用这个值筛选员工(外层查询)。
平均值是:(48 + 34 + 46 + 13 + 28) / 5 = 33.8,所以查询结果是:
| id | salary |
|---|---|
| 1 | 48 |
| 2 | 34 |
| 3 | 46 |
挑战
简单可用的表和列:
shop:price,quantity,category,list_date
编写一个查询,找出价格高于所有商品平均价格的所有商品(选择所有列)。
在 WHERE 子句中使用子查询计算平均价格,然后将每件商品的价格与该平均价格进行比较。
亲手试试
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: SQL 在线编辑器