SQL where子句在执行count()后使用Group by子句

时间:2010-06-08 19:12:18

标签: sql mysql

在w3schools和google上尝试过我常用的参考资料。没有运气

我正在尝试产生以下结果。 QTY是派生列

   | Position | QTY
 --------------------
 1   Clerk      2
 2   Mgr        2   

这是我没有运气的地方:

  SELECT Position, Count(position) AS 'QTY'
    FROM tblemployee
   Where ('QTY' != 1)
GROUP BY Position

我知道我的位置设置为varchar(255) Count产生一个整数数据,我的where clasue是准确的,这让我相信Count()正在阻塞我。请举一个例子,以便我稍后再提及。谢谢你的帮助!

4 个答案:

答案 0 :(得分:4)

SELECT Position, Count(position) AS 'QTY'
FROM tblemployee
GROUP BY Position
HAVING Count(Position) != 1

注意:这就是它在SQL Server&也应该是mysql的情况(我猜)。

答案 1 :(得分:2)

这就是HAVING子句的用途:

SELECT Position, Count(position) AS 'QTY'
FROM tblemployee
GROUP BY Position
HAVING QTY != 1

答案 2 :(得分:1)

在SQL Server中,我会这样做:

SELECT Position, Count(position) AS 'QTY' 
FROM tblemployee 
GROUP BY Position 
HAVING COUNT(position) <> 1

我不知道它是否适用于MySql,但我相信它是标准的SQL语法。

答案 3 :(得分:0)

有几个问题。在SQL中,您无法按名称引用QTY列(在本例中)。此外,由于您要分组并想要排除某个值,您必须使用“HAVING”子句而不是where子句。

可以使用where子句来删除您不想计算的内容。 (见例2)

ST

SELECT Position, Count(position) AS QTY
FROM tblemployee
GROUP BY Position
HAVING Count(position) <> 1

-- Example 2
-- Don't count poor old Johnny
SELECT Position, Count(position) AS QTY
FROM tblemployee
WHERE Position <> 'Johnny'
GROUP BY Position
HAVING Count(position) <> 1