mysql - MySQL 中的条件分组

标签 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,则我按 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/

相关文章:

mysql - 如何编写只返回重复值而不使用聚合函数的 MySQL 查询?

sql - 使用 GROUP BY 和 HAVING 重构 MySQL

c# - 在 .Net 中准备 SELECT 语句

mysql - 需要使用不同条件从表的列中的单行中进行多次 id 计数

sql-server - 在按 SQL Server 2008 分组的选择查询中选择一个 xml 类型的列

mysql - 错误 1115 (42000) 在第 29 行 : Unknown character set: 'utf32'

mysql 替换 h2 标签之间的文本

mysql - 如何将 mysqldump 用于表的一部分?

javascript - Jquery选择语句

MySQL 条件选择