BigQuery SQL:在GROUP BY子句中使用时,SELECT别名是否优先于FROM子句的列名?

好多哥

我有一个关于col以下内容的含糊不清的简单查询

SELECT SUBSTR(col, 1, 4) AS col, 
       COUNT(*) AS nc
  FROM (SELECT 'test1' AS col
         UNION ALL
        SELECT 'test2' AS col) 
 GROUP BY col

根据文档,查询验证器应引发错误:

GROUP BY中的FROM子句列名和SELECT列表别名之间的歧义:

SELECT UPPER(LastName) AS LastName
FROM Singers
GROUP BY LastName;

上面的查询是模棱两可的,并且会产生错误,因为GROUP BY子句中的LastName可能引用Singers中的原始列LastName,或者可能引用别名AS LastName,其值为UPPER(LastName)。

但是查询成功执行并提供以下结果:

╔═══╦═══════╦══════╗
║   ║ col   ║ nc   ║
╠═══╬═══════╬══════╣
║ 1 ║ test  ║ 2    ║
╚═══╩═══════╩══════╝

从结果很明显,GROUP BY子句col从外部select(整个SUBSTR表达式)识别为别名

所以这是我的问题,它是否足够可靠?我是否可以考虑到这一点并相应地调整查询来编写查询?

费利佩·霍法

该查询并不是真正的模棱两可。我非常了解这个意图,BigQuery也很清楚。

比较:

WITH Singers AS (SELECT "Sinatra" LastName UNION ALL SELECT "sinatra")

SELECT UPPER(LastName) AS LastName
FROM Singers
GROUP BY Singers.LastName;

WITH Singers AS (SELECT "Sinatra" LastName UNION ALL SELECT "sinatra")

SELECT UPPER(LastName) AS LastName
FROM Singers
GROUP BY LastName;

两者的行为均符合我的预期。如果有的话,这里的文档是错误的,我已经填好了票,因此已得到修复。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在where子句中使用别名-SQL

来自分类Dev

select子句中的order / group by子句中使用的列是否必须?

来自分类Dev

Bigquery:选择列值不在group by子句中的列

来自分类Dev

在BigQuery SQL中使用IF

来自分类Dev

bigquery中的group by子句不起作用

来自分类Dev

sql在where子句中使用查询别名

来自分类Dev

如何在 SQL Server 的 where 子句中使用别名

来自分类Dev

在SQL的where子句中使用变量作为列名

来自分类Dev

SQL:是否需要在 SELECT 子句中列出 GROUP BY 子句中的所有属性?

来自分类Dev

在OR子句SQL中使用别名

来自分类Dev

Oracle group by子句在select语句中使用嵌套函数

来自分类Dev

SQL-BigQuery-在几列中使用Group&MAX-与数据透视表相似

来自分类Dev

在SQL查询的'WHERE'子句中的'SELECT'中使用'IF'的结果

来自分类Dev

Bigquery-选择不按group by子句将其分组的列

来自分类Dev

使用Python的BigQuery动态SQL

来自分类Dev

BigQuery:使用标准 sql 查询

来自分类Dev

如果聘用人数剩下1,则使用SQL(在where子句中使用列别名)

来自分类Dev

如何在SQL中的SUM子句中使用not in子句

来自分类Dev

SQL查询:在WHERE子句中使用AND / OR

来自分类Dev

在Spark SQL的'WHERE'子句中使用'as'

来自分类Dev

SELECT子句中的CASE语句的T-SQL别名在WHERE子句中无法识别

来自分类Dev

BigQuery的WHERE子句中的SELECT陈述式无法运作

来自分类Dev

Postgres SQL:列必须出现在GROUP BY子句中或在聚合函数中使用

来自分类Dev

ORACLE SQL-在WHERE子句中使用带有GROUP BY无效标识符的SUM

来自分类Dev

在WHERE子句中使用!=时,SELECT不起作用(使用GROUP BY和HAVING COUNT)

来自分类Dev

Group By子句中的无效列名错误

来自分类Dev

使用WHERE子句中的子查询的Google BigQuery优化

来自分类Dev

SQL Server GROUP BY在SELECT中包含列但在GROUP BY子句中不包含

来自分类Dev

使用BigQuery SQL语法匹配记录

Related 相关文章

  1. 1

    在where子句中使用别名-SQL

  2. 2

    select子句中的order / group by子句中使用的列是否必须?

  3. 3

    Bigquery:选择列值不在group by子句中的列

  4. 4

    在BigQuery SQL中使用IF

  5. 5

    bigquery中的group by子句不起作用

  6. 6

    sql在where子句中使用查询别名

  7. 7

    如何在 SQL Server 的 where 子句中使用别名

  8. 8

    在SQL的where子句中使用变量作为列名

  9. 9

    SQL:是否需要在 SELECT 子句中列出 GROUP BY 子句中的所有属性?

  10. 10

    在OR子句SQL中使用别名

  11. 11

    Oracle group by子句在select语句中使用嵌套函数

  12. 12

    SQL-BigQuery-在几列中使用Group&MAX-与数据透视表相似

  13. 13

    在SQL查询的'WHERE'子句中的'SELECT'中使用'IF'的结果

  14. 14

    Bigquery-选择不按group by子句将其分组的列

  15. 15

    使用Python的BigQuery动态SQL

  16. 16

    BigQuery:使用标准 sql 查询

  17. 17

    如果聘用人数剩下1,则使用SQL(在where子句中使用列别名)

  18. 18

    如何在SQL中的SUM子句中使用not in子句

  19. 19

    SQL查询:在WHERE子句中使用AND / OR

  20. 20

    在Spark SQL的'WHERE'子句中使用'as'

  21. 21

    SELECT子句中的CASE语句的T-SQL别名在WHERE子句中无法识别

  22. 22

    BigQuery的WHERE子句中的SELECT陈述式无法运作

  23. 23

    Postgres SQL:列必须出现在GROUP BY子句中或在聚合函数中使用

  24. 24

    ORACLE SQL-在WHERE子句中使用带有GROUP BY无效标识符的SUM

  25. 25

    在WHERE子句中使用!=时,SELECT不起作用(使用GROUP BY和HAVING COUNT)

  26. 26

    Group By子句中的无效列名错误

  27. 27

    使用WHERE子句中的子查询的Google BigQuery优化

  28. 28

    SQL Server GROUP BY在SELECT中包含列但在GROUP BY子句中不包含

  29. 29

    使用BigQuery SQL语法匹配记录

热门标签

归档