用于查找公共性的SQL计数函数
我面临的问题如下:列出产品名称的首字母及其总数。仅当有3个或更多产品以字母表中的该字母开头时,才显示字母和计数 很明显,查询需要使用COUNT聚合,但我正在仔细研究这个问题。如何编写此查询 预期产出:用于查找公共性的SQL计数函数,sql,sql-server,count,Sql,Sql Server,Count,我面临的问题如下:列出产品名称的首字母及其总数。仅当有3个或更多产品以字母表中的该字母开头时,才显示字母和计数 很明显,查询需要使用COUNT聚合,但我正在仔细研究这个问题。如何编写此查询 预期产出: ProductName Total C 9 G 11 等等 我假设在select语句中需要一个子字符串 SELECT SUBSTRING(ProductName,1,1) A
ProductName Total
C 9
G 11
等等
我假设在select语句中需要一个子字符串
SELECT SUBSTRING(ProductName,1,1) AS ProductName,
COUNT(ProductName) AS Total
FROM Products
但是使用WHERE和count函数会给我一个聚合错误是SQLServer2012?您只需要一个适当的组和having子句:
SELECT
LEFT(ProductName, 1) AS ProductName,
COUNT(*) AS [Total]
FROM Products
GROUP BY
LEFT(ProductName, 1)
HAVING COUNT(*) >= 3
您不能使用
where
子句中的aggregate
函数来过滤结果
要过滤组的内容,必须使用having
子句,而不是where
子句。试试这个
SELECT SUBSTRING(ProductName,1,1) AS ProductName,
COUNT(ProductName) AS Total
FROM Products
group by SUBSTRING(ProductName,1,1)
having COUNT(ProductName) >=3
您能否添加一些示例数据和预期输出。同时标记您正在使用的数据库确保:请参见上面的编辑。完美!我在分组BY子句中缺少子字符串。谢谢完美地工作