我有包含这些字段的表格:
- 金额
- 姓名
- sender_id,
- sender_email
我尝试根据以下条件按 sender_id 或 sender_email 对所有记录进行分组:
如果记录 sender_id == 0,我会尝试查找具有相同 sender_email 但 sender_id > 0 的其他记录。
1.1 如果我找到这样的记录(一个或多个),我会将它们分组。
1.2 如果没有这样的记录,我通过sender_email进行分组。
如果 sender_id > 0,则我按 sender_id 分组。
最后,我想列出每个 sender_id 的总金额。
这可以用普通 SQL 来完成吗? 我尝试了很多方法但没有运气。
最佳答案
我想我已经知道如何制作它:
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
关于mysql - MySQL 中的条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173657/