Mysql 按照记录的日期分组,并将结果按照某字段分组聚合

发布于 2022-09-12 04:46:34 字数 619 浏览 23 评论 0

遇到一个需求是将表内的数据按日期分组聚合,不过其中有个类型字段,需要同时将类型的值也做个分组聚合。请问应该如何写sql最优:

数据表结构

create table record
(
    id int unsigned auto_increment
        primary key,
    amount int(10) default 0 not null comment '记录金额',
    type tinyint(1) not null comment '记录类型 1 支出 2收入 3其他',
    create_time datetime null
)

通过sql可以达到按天的分组,但是如何将type也按照每天分组做个统计

select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(amount) amount,type from record group by DATE_FORMAT(create_time,'%Y-%m-%d')

期望查询出来的每行结果为如下字段:
day amount type_1_amount type_2_amount type_3_amount
请问这样效果应该如何实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぇ气 2022-09-19 04:46:34

我猜你type_1_amounttype_2_amount分别表示的是每日支出和收入总额,那SQL就这样:

select DATE_FORMAT(create_time,'%Y-%m-%d') as day,
  sum(amount) amount,
  sum(if(type=1,amount,0)) type_1_amount,
  sum(if(type=2,amount,0)) type_2_amount,
  sum(if(type=3,amount,0)) type_3_amount
from record 
group by DATE_FORMAT(create_time,'%Y-%m-%d')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文