2010-06-08 161 views
1

在w3schools和google上试用了我通常的参考。没有运气SQL where子句在执行count()后使用group by子句()

我试图产生以下结果。数量是一个派生列

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

这里就是我没有运气:

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

我知道我的位置被设置为varchar(255) 计数产生一个整数的数据和我的clasue是准确的,这使我相信Count()正在干扰我。请举出一个例子,以便稍后参考。谢谢您的帮助!

回答

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

注:这是怎么会在SQL Server &也应该是与MySQL(我猜)的情况。

+0

感谢您的帮助!当你看错条款时会产生很大的变化。 – Matt 2010-06-08 19:29:30

+0

尝试使用“不等于”的标准<> http://msdn.microsoft.com/zh-cn/library/ms188074.aspx – gbn 2010-07-09 12:46:09

2

这就是HAVING条款是什么:

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

你打我吧! – theShingles 2010-06-08 19:16:47

1

在SQL Server中,我会做:

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

我不知道这是否在MySQL的工作,但我相信这是标准的SQL语法。

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