SQL子查询和group by产生具有相同值的行

亚历克斯·科尔曼

目前,我有一个运行良好的查询:

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之后应用的如果我想添加一个子查询,正确的方法是什么?

福帕斯

子查询:

select yearID from Batting

返回多于1行(实际上返回的行与table中的行一样多Batting),在任何其他rdbms中,此查询:

SELECT teamID, (select yearID from Batting) as yearID2, AVG(HBP) as avgHBP 
FROM Batting 
GROUP BY teamID, yearID2

是无效的。

但是SQLite允许它,并且仅返回1行(未定义)

简而言之,您的查询是无效的SQL,尽管它不会引发错误(仅在SQLite中)。

得到的结果与执行的结果相同:

SELECT teamID, AVG(HBP) as avgHBP 
FROM Batting 
GROUP BY teamID

带有1个额外的列,这是yearID子查询的未定义返回

对于您的问题:

如果我想添加一个子查询,正确的方法是什么?

答案是,关于如何添加子查询没有通用规则
这取决于要求。
例如,如果您使用此子查询:

select max(yearID) from Batting

它仅返回1行,那么您将有一个有效的查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

合并具有相同值的sql行

来自分类Dev

合并具有相同值的sql行

来自分类Dev

SQL查询以查找具有相同值集的行

来自分类Dev

SQL 查询:从 PostgreSQL 中删除具有相同值的行

来自分类Dev

SQL查询:获取不存在具有相同值和列值B的列A的行

来自分类Dev

SQL COUNT所有具有相同或较小值的行

来自分类Dev

SQL-具有特定值和子查询的插入

来自分类Dev

如何添加具有相同值的查询行?

来自分类Dev

MySql查询2列中具有相同值的行

来自分类Dev

找到具有相同资源键(具有不同的.ending)和相同值的行

来自分类Dev

访问SQL选择具有与条件结果相同的值的行

来自分类Dev

具有相同名称值的SQL concat行

来自分类Dev

带有子查询的 SQL GROUP BY

来自分类Dev

sql查询返回具有相同列值的所有行

来自分类Dev

如何将具有相同值和总值的行与 mysql 查询合并?

来自分类Dev

sql:使用单个查询在另一列中选择具有相同列值的行

来自分类Dev

合并具有相同值和总和值的同一列和表中的行

来自分类Dev

SQL:分组并具有COUNT(*)和子查询问题

来自分类Dev

具有多个条件和子选择的SQL查询

来自分类Dev

连接表的行和具有相同字段名称的子查询

来自分类Dev

具有JOIN和GROUP BY SQL查询的Django COUNT

来自分类Dev

具有相同表值的MYSQL查询

来自分类Dev

删除其他行中具有相同值的sql行

来自分类Dev

SQL 显示具有相同一列值的行分组的行

来自分类Dev

带有子查询和GROUP BY的MySQL SELECT的性能

来自分类Dev

带有子查询和“ HAVING”的SQL查询极慢

来自分类Dev

检查是否存在具有相同值的行和列的有效算法?

来自分类Dev

SQL 选择在所有行中具有相同值的项目

来自分类Dev

SQL 子查询或 Group BY 返回特定列的不同值?

Related 相关文章

  1. 1

    合并具有相同值的sql行

  2. 2

    合并具有相同值的sql行

  3. 3

    SQL查询以查找具有相同值集的行

  4. 4

    SQL 查询:从 PostgreSQL 中删除具有相同值的行

  5. 5

    SQL查询:获取不存在具有相同值和列值B的列A的行

  6. 6

    SQL COUNT所有具有相同或较小值的行

  7. 7

    SQL-具有特定值和子查询的插入

  8. 8

    如何添加具有相同值的查询行?

  9. 9

    MySql查询2列中具有相同值的行

  10. 10

    找到具有相同资源键(具有不同的.ending)和相同值的行

  11. 11

    访问SQL选择具有与条件结果相同的值的行

  12. 12

    具有相同名称值的SQL concat行

  13. 13

    带有子查询的 SQL GROUP BY

  14. 14

    sql查询返回具有相同列值的所有行

  15. 15

    如何将具有相同值和总值的行与 mysql 查询合并?

  16. 16

    sql:使用单个查询在另一列中选择具有相同列值的行

  17. 17

    合并具有相同值和总和值的同一列和表中的行

  18. 18

    SQL:分组并具有COUNT(*)和子查询问题

  19. 19

    具有多个条件和子选择的SQL查询

  20. 20

    连接表的行和具有相同字段名称的子查询

  21. 21

    具有JOIN和GROUP BY SQL查询的Django COUNT

  22. 22

    具有相同表值的MYSQL查询

  23. 23

    删除其他行中具有相同值的sql行

  24. 24

    SQL 显示具有相同一列值的行分组的行

  25. 25

    带有子查询和GROUP BY的MySQL SELECT的性能

  26. 26

    带有子查询和“ HAVING”的SQL查询极慢

  27. 27

    检查是否存在具有相同值的行和列的有效算法?

  28. 28

    SQL 选择在所有行中具有相同值的项目

  29. 29

    SQL 子查询或 Group BY 返回特定列的不同值?

热门标签

归档