SQL 计数查询

Posted

技术标签:

【中文标题】SQL 计数查询【英文标题】:SQL count query 【发布时间】:2008-10-02 13:56:22 【问题描述】:

您好,为什么这在 SQL Server 2005 中不起作用?

select HALID, count(HALID) as CH from Outages.FaultsInOutages

where CH > 3

group by HALID

我得到无效的列名“CH”


我认为 have 是正确的方法,但仍然收到错误: 列名“CH”无效。

运行时:

从 Outages.FaultsInOutages 中选择 HALID, count(HALID) as CH 按 CH > 3 的 HALID 分组

【问题讨论】:

【参考方案1】:

您不能在 where 子句或 have 子句中使用别名,因为它在生成结果集之后才被处理,正确的语法是

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3

这将对 HALID 上的项目进行分组,然后仅返回具有特定 HALID 的 3 个以上条目的结果

【讨论】:

【参考方案2】:

试试

select HALID, count(HALID) from Outages.FaultsInOutages 
group by HALID having count(HALID) > 3

您的查询有两个错误:

在分组时使用 where 聚合,使用 have 解决 在条件中为聚合使用别名,不支持,通过再次使用聚合解决

【讨论】:

以上是关于SQL 计数查询的主要内容,如果未能解决你的问题,请参考以下文章

用于计数的嵌套计数查询的 SQL 语法问题?

Spark sql 查询导致分区计数膨胀

在sql中组合多个计数查询

优化 sql 计数查询

如何在选择查询中增加 sql 计数器

SQL 查询 - 选择不同的类别并计数