不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)
Posted
技术标签:
【中文标题】不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)【英文标题】:Group or Aggregate functions (min(),max(),sum(),count(),...etc.,) cannot be used within the Group by/Order by/Where/ON clause 【发布时间】:2021-03-26 05:18:27 【问题描述】:似乎我不能按列的计数排序,这很奇怪,因为我已经看到很多在 ORDER BY 语句中使用 count() 的示例。我正在使用 Zoho Analytics。 这是我的查询:
SELECT "Lead Owner Name", "Lead Source", count("Lead Source")
FROM "Leads"
group by "Lead Owner Name", "Lead Source"
order by count("Lead Source") DESC;
【问题讨论】:
您可以改为按列别名排序吗? 【参考方案1】:尝试使用别名:
SELECT "Lead Owner Name", "Lead Source", count("Lead Source") as cnt
FROM "Leads"
GROUP BY "Lead Owner Name", "Lead Source"
ORDER BY cnt DESC;
大多数数据库都支持ORDER BY
中的任意表达式。但是,有些要求排序表达式实际上是一列——并且他们不检测SELECT
表达式何时与ORDER BY
表达式相同。我之前遇到过这个问题(我认为是 Hive),只是认为这可能适用于您的环境。
【讨论】:
【参考方案2】:您可以在 Zoho Analytics 的 ORDER BY 子句中使用列号。 :)
SELECT "Lead Owner Name", "Lead Source", count("Lead Source")
FROM "Leads"
group by 1,2
order by 3 DESC
【讨论】:
以上是关于不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)的主要内容,如果未能解决你的问题,请参考以下文章
sql语句select group by order by where一般先后顺序
sql语句select group by order by where一般先后顺序
sql语句select group by order by where一般先后顺序