
如何利用 分组展示查询结果
在 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`
) t2 ON t2.`name` = t.`name`
WHERE
MONTH(start_date) >= 7
GROUP BY
`name`;
登录后复制
以上就是如何利用 MySQL 分组展示查询结果并计算每个分组的聚合值?的详细内容,更多请关注米云网其它相关文章!
