2014-10-08 132 views
0
SELECT tblItems.ItemType, Count(tblItems.ItemType) AS total 
FROM tblItems 
WHERE (((tblItems.Pool) BETWEEN 188 AND 218)) 
GROUP BY tblItems.ItemType; 

這是我當前的查詢,它打印出一行中的項目以及它們出現在另一行命名爲total的總時間。我希望能夠用這個百分比表示總行數。我試圖在(total/SUM(total)) AS pct_total之後添加,但這不起作用。我得到的錯誤是sql查詢找到總百分比

+0

定義「不起作用」。如果你的意思是你得到一個錯誤,那可能是因爲你忘記了Count(tblItems.ItemType)後面的圓括號。 – GolezTrol 2014-10-08 13:06:52

+0

我忘了寫這個時寫的,我得到的錯誤是 – Neal 2014-10-08 13:08:42

+0

好吧,如果你在另一個查詢中出現這個錯誤,那麼請張貼其他查詢(太) – GolezTrol 2014-10-08 13:09:43

回答

2

這裏有一個方法:

SELECT i.ItemType, Count(i.ItemType) AS total, 
     Count(*) * 1.0/(select count(*) from tblItems WHERE Pool between 188 and 218) as ratio 
FROM tblItems as i 
WHERE i.Pool BETWEEN 188 AND 218 
GROUP BY i.ItemType; 
+0

這似乎是在正確的軌道上,讓我玩這個,看看我得到了什麼 – Neal 2014-10-08 15:03:34

1

您可能需要使用子查詢..嘗試這樣的「子查詢不能在表達式(總和(總))使用」:

select Itemtype,(total/SUM(total)) AS pct_total from 
(SELECT tblItems.ItemType as Itemtype, Count(tblItems.ItemType) AS total 
FROM tblItems 
WHERE (((tblItems.Pool) BETWEEN 188 AND 218)) 
GROUP BY tblItems.ItemType) as A 
Group By A.Itemtype; 
+0

我在使用這個 – Neal 2014-10-08 13:15:18

+0

@Neal編輯試試現在得到一個「FROM子句中的語法錯誤 – Siva 2014-10-08 13:20:36

+0

啊,它不喜歡在哪裏分號是但現在它是「你試圖執行一個查詢,不包括指定的表達式'Itemtype'作爲聚合函數的一部分 – Neal 2014-10-08 13:23:50