我有这些字段的表格:
我正在尝试根据以下条件对sender_id或sender_email的所有记录进行分组:
如果对于记录sender_id == 0,我尝试使用相同的sender_email但使用sender_id>查找其他记录。 0
1.1如果我找到这样的记录(一个或多个),我会与他们分组。
1.2如果没有这样的记录,我通过sender_email建立一个组。
如果sender_id> 0然后我按发件人ID分组。
最后,我想列出每个sender_id的总金额。
这可以在纯SQL中完成吗? 我尝试了很多方法,但没有运气。
答案 0 :(得分:0)
我想我已经想过如何制作它:
SELECT
src.grp,
sum(src.amount) AS total_amount,
count(*) AS total_count
FROM (
SELECT DISTINCT
d1.id,
d2.`sender_id`,
IFNULL(d2.`sender_id`, d1.`sender_email`) AS grp,
d1.`amount`,
d1.`sender_email`
FROM
donations d1
LEFT JOIN donations d2 ON d1.`sender_email` = d2.`sender_email`
AND d2.`sender_id` > 0
) src
GROUP BY src.grp