2017-06-21 63 views
1

enter image description here查询具有鲜明和group by

如何获得9300只出上表的?我只需要添加6500 + 1800 + 1000

这里是我当前的查询

SELECT 
SUM(e.amount)/(SELECT count(e2.receipt_no) 
       FROM entries e2 
       WHERE e2.receipt_no = e.receipt_no) as total, 
e.user_id 
FROM 
entries e 
GROUP BY e.receipt_no 

结果是

enter image description here

现在我需要得到每user_id

预期产量应为

enter image description here

+0

PLZ告诉你需要 – Shibon

+0

'GROUP BY DISTINCT e.receipt_no' –

+0

@JaydipJ它在GROUP BY e.receipt_no添加不同的 – Kiel

回答

1

从我的理解这应该给你想你想

SELECT sum(DISTINCT amount) as total, reciept_no FROM entries GROUP BY receipt_no

1

尝试这样

SELECT SUM(DISTINCT(amount)) as total, user_id FROM `entries` GROUP BY user_id 
+0

谢谢这个作品为这种情况下,如何对同一数量的2收据:( – Kiel

+0

上述查询将总结每个用户的唯一金额 – Shibon

1

一些东西试试这个

SELECT SUM(amount) as total,user_id FROM entries GROUP BY user_id 
+0

对不起,但它总结了来自用户行的所有金额,但我需要从收据中首先获取不同的金额,然后将其与其他收据的金额相加。 – Kiel

+0

嗯,然后@Shibon的答案将工作 – jarg

1

首先计算DISTINCT量按用户组重新分组ceipt_no然后USER_ID有条目组的总和:

SELECT sum(total),userid from (SELECT sum(DISTINCT amount) as total, 
userid,receipt_no FROM entries GROUP BY userid,receipt_no) as rgrouped 
GROUP BY userid 
0

你也可以试试这个

SELECT user_id, SUM(DISTINCT `amount`) FROM `test` group by `user_id` 

第1步:为每个用户ID选择不同的量

101 - 6500,1800,1000 
189 - 1019.00 

步骤 - 2

101 = 6500+1800+1000 = 9300.00 
189 = 1019.00 

T他将为每个用户ID选择distinct金额,然后添加选定的金额并给出相同的结果。