现有如下两张表:
城市表(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,否则它返回