【发布时间】:2021-01-12 20:37:32
【问题描述】:
目前,我有一个运行良好的查询:
SELECT teamID, yearID, AVG(HBP) as avgHBP FROM Batting \
GROUP BY teamID, yearID \
ORDER BY avgHBP DESC \
LIMIT 5;
结果:
| teamID | yearID | avgHBP |
|--------|--------|--------|
| BLN | 1898 | 6.67 |
| BL3 | 1891 | 6.16 |
| BLN | 1897 | 5.75 |
| BLN | 1896 | 5.45 |
| BLN | 1895 | 5.30 |
但是,当我尝试添加子查询时(除了尝试学习子查询之外没有其他原因), 我明白了:
SELECT teamID, (select yearID from Batting) as yearID2, AVG(HBP) as avgHBP FROM Batting \
GROUP BY teamID, yearID2 \
ORDER BY avgHBP DESC \
LIMIT 5;
结果:
| teamID | yearID | avgHBP |
|--------|--------|--------|
| BLN | 1871 | 4.44 |
| CL5 | 1871 | 3.93 |
| BL3 | 1871 | 3.86 |
| BFP | 1871 | 3.69 |
| TL2 | 1871 | 3.55 |
所有列只考虑第一年 (1871)。
这是因为子查询是在group by 之后应用的吗?如果我想添加一个子查询,那么正确的方法是什么?
【问题讨论】:
标签: sql sqlite group-by subquery