Mysql group with rollup应用以及游标的应用

本文介绍了如何使用MySQL的GROUP BY ROLLUP功能统计每个城市各月的金额,以及如何结合IFNULL和IF函数处理NULL值。接着通过存储过程和游标动态地实现这一操作,展示了游标在处理数据行迭代中的作用,从而提供了一种灵活的数据处理方式。
摘要由CSDN通过智能技术生成

现有如下两张表:

城市表(city)
这里写图片描述

金额表(money)
这里写图片描述

需要统计每个城市各月的金额及总额和所有城市每个月的金额和总额。

首先按月份统计各城市的金额

SELECT IFNULL(A.name,'total') as name,SUM(A.pay_money) AS pay_money,A.date_time as date_time FROM
(
    SELECT c.name,m.pay_money AS pay_money,DATE_FORMAT( from_unixtime(m.order_time),'%Y%m') as date_time FROM money m INNER JOIN city c ON c.id = m.cid
)AS A GROUP BY date_time, name WITH ROLLUP HAVING date_time is NOT NULL 

这里有几个函数介绍一下:
IFNULL(exp1,exp2),如果exp1为null,则返回exp2,否则返回exp1。
IF(exp1,exp2,exp3),如果exp1是TRUE(exp1<>0且exp1<>NULL),那么IF()返回exp2,否则它返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值