2010-06-08 162 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