如何利用 MySQL 分组展示查询结果并计算每个分组的聚合值?

如何利用 MySQL 分组展示查询结果并计算每个分组的聚合值?

如何利用 mysql 分组展示查询结果

mysql 中,要将查询结果按多个字段分组并行展示,可以采用以下方法:

首先,先按指定的字段对数据进行分组,例如按 name 和 start_date 分组:

select      `name`,      start_date from      `task` group by      `name`,      start_date;
登录后复制

然后,对于每个分组,分别计算每个组内每个字段的聚合值,例如计算每个分组中的 num 字段的总和:

select      `name`,     start_date,     sum(`num`) as `sum_num` from      `task` group by      `name`,      start_date;
登录后复制

再进一步,我们可以根据需要创造额外的字段来展示想要的结果。例如,我们可以根据 start_date 字段将数据分为 “上半年” 和 “下半年”:

select      `name`,     start_date,     sum(`num`) as `sum_num`,     if(month(start_date) >= 7, '下半年', '上半年') as `cycle` from      `task` group by      `name`,      `cycle`;
登录后复制

最后,我们可以使用 case 语句或 ifnull 函数来处理空值,并将结果展示成需要的格式:

SELECT      `name`,     '上半年' AS `start_date`,     SUM(`num`) AS `shang_sum`,     IFNULL(t2.`xia_sum`,0) AS `xia_sum` FROM      `task` t LEFT JOIN (      SELECT          `name`,          SUM(`num`) AS `xia_sum`      FROM          `task`      WHERE          MONTH(start_date) = 7  GROUP BY      `name`;
登录后复制

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容