MySQL中的条件分组

时间:2014-04-19 18:09:30

标签: mysql select group-by sum

我有这些字段的表格:

  • 金额
  • 名称
  • SENDER_ID,
  • SENDER_EMAIL

我正在尝试根据以下条件对sender_id或sender_email的所有记录进行分组:

  1. 如果对于记录sender_id == 0,我尝试使用相同的sender_email但使用sender_id>查找其他记录。 0

    1.1如果我找到这样的记录(一个或多个),我会与他们分组。

    1.2如果没有这样的记录,我通过sender_email建立一个组。

  2. 如果sender_id> 0然后我按发件人ID分组。

  3. 最后,我想列出每个sender_id的总金额。

    这可以在纯SQL中完成吗? 我尝试了很多方法,但没有运气。

1 个答案:

答案 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