首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery:按表达式按任意组排序的最佳方式?

问BigQuery:按表达式按任意组排序的最佳方式?
EN

Stack Overflow用户
提问于 2021-05-18 23:43:58
回答 1查看 99关注 0票数 0

在下面的查询中,我希望按照名字和姓氏的连接对所有订单进行分组,并按连接设置的结果进行排序。但是,BigQuery为查询返回以下错误:

代码语言:javascript
复制
SELECT 
    COUNT(o.ORDERID)
FROM EMPLOYEES e
INNER JOIN ORDERS o ON e.EMPLOYEEID = o.EMPLOYEEID
GROUP BY CONCAT(e.FIRSTNAME, ' ', e.LASTNAME)
ORDER BY CONCAT(e.FIRSTNAME, ' ', e.LASTNAME)

ORDER子句表达式引用列column_name,该列既不分组也不聚合

我可以通过在ORDER BY中包装ANY_VALUE子句来修复这个问题。

代码语言:javascript
复制
SELECT 
    COUNT(o.ORDERID)
FROM EMPLOYEES e
INNER JOIN ORDERS o ON e.EMPLOYEEID = o.EMPLOYEEID
GROUP BY CONCAT(e.FIRSTNAME, ' ', e.LASTNAME)
ORDER BY ANY_VALUE(CONCAT(e.FIRSTNAME, ' ', e.LASTNAME))

这是最好的做法吗?对于任意的GROUP BY表达式,是否有更规范的方法来做到这一点?其他DBMS,包括MySQL、SQLServer、Postgres等,处理第一个查询时没有出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 23:46:31

你可以只使用数字或引用。此外,您还可以在GROUP BY中使用SELECT键。我建议:

代码语言:javascript
复制
SELECT CONCAT(e.FIRSTNAME, ' ', e.LASTNAME) as fullname
       COUNT(o.ORDERID)
FROM EMPLOYEES e INNER JOIN
     ORDERS o
     ON e.EMPLOYEEID = o.EMPLOYEEID
GROUP BY fullname
ORDER BY fullname;

您还可以将最后两行写成:

代码语言:javascript
复制
GROUP BY 1
ORDER BY 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67595222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档