2014-02-18 60 views
0

我想,總交易用戶超過50000選擇總和(金額)作爲條件對總

SELECT sum(tractions.amount) as total , user_id FROM `tractions` where `total` > 50000 group by user_id 

我得到這個錯誤總

#1054 - Unknown column 'total' in 'where clause' 
詛咒

沒有總列在表中,但我應該怎麼寫條件?

回答

4

你需要一個having子句聚集總數:

SELECT sum(tractions.amount) as total , user_id 
FROM `tractions` 
group by user_id 
HAVING total > 50000; 

編輯:

如果我寫這個查詢時,它看起來像這樣:

select t.user_id, sum(t.amount) as total 
from tractions t 
group by t.user_id 
having sum(t.amount) > 50000; 

我發現大寫關鍵字會分散注意力。我(幾乎)總是將我正在聚合的字段放在行首。我大量使用表別名,它們是表格的縮寫。我不會逃避標識符,因爲我從不在標識符中使用保留字或特殊字符。我把這個表達式放在having子句中,因爲。 。 。好吧,我曾經想過,並非所有數據庫都支持在having子句中使用列別名。

+0

爲什麼你使用'tractions.'爲'amount'但不'user_id'? –

+0

@GrijeshChauhan。 。 。因爲我儘可能以原始形式留下了查詢。這是OP如何指定查詢。 –

+0

是的,我沒有對OP發表評論,因爲我想讓你在你的回答中添加關於這個的附註。另外''''應該在任何地方使用,並且所有關鍵字都以大寫字母表示。 –

0

試試這個

SELECT sum(tractions.amount) as total , user_id FROM `tractions` where sum(tractions.amount) > 50000 group by user_id 
+1

我得到#1111 - 無效使用組功能的 – max

+0

對不起你,你通過檢查一個有團體使用具有'Gordon'給 – Minhaz

0
SELECT sum(tractions.amount) as total , user_id 
FROM `tractions` 
where sum(tractions.amount) > 50000 
group by user_id 
0
SELECT 
    sum(tractions.amount) as total, user_id 
FROM 
    `tractions` 
group by user_id 
having total > 50000;