2014-02-18 53 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;