入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

mysql统计一个月每天、每月、月汇总的统计.

创建时间:2013-03-04 投稿人: 浏览次数:118

表结构如下:
CREATE TABLE tempTB(
tId INT NOT NULL,
tMoney0 DECIMAL(18,2),
tMoney1 DECIMAL(18,2),
tranDate VARCHAR(20)
);
插入的数据:
INSERT INTO tempTB VALUES (1,100,0.00,"2013-2-12");
INSERT INTO tempTB VALUES (2,120,0.00,"2013-2-12");
INSERT INTO tempTB VALUES (3,0.00,1000.00,"2013-2-13");
INSERT INTO tempTB VALUES (4,100,0.00,"2013-2-13");
INSERT INTO tempTB VALUES (5,150,0.00,"2013-2-13");
INSERT INTO tempTB VALUES (6,0.00,200.00,"2013-2-13");
INSERT INTO tempTB VALUES (7,100,0.00,"2013-2-14");
INSERT INTO tempTB VALUES (8,0.00,200.00,"2013-2-14");
INSERT INTO tempTB VALUES (9,100,0.00,"2013-2-14");
INSERT INTO tempTB VALUES (10,100,0.00,"2013-3-14");
INSERT INTO tempTB VALUES (11,100,0.00,"2013-3-14");
INSERT INTO tempTB VALUES (12,100,0.00,"2013-4-14");
INSERT INTO tempTB VALUES (13,100,0.00,"2013-4-14");
现在要实现的排序效果如下:

tMoney0     tMoney1 tranDate #注释
120     0          2013-2-12
100     0          2013-2-12
220     0          2013-2-12 2月12日汇总
150     0          2013-2-13
0    1000          2013-2-13
0     200          2013-2-13
100     0          2013-2-13
250     1200  2013-2-13 2月13日汇总
100     0          2013-2-14
100     0          2013-2-14
0     200          2013-2-14 2月14日汇总
200     200          2013-2-14 3月13日汇总
670     1400  2013-2-14 2月汇总
100      0          2013-3-14
100     0          2013-3-14
200     0          2013-3-14 3月14日汇总
200     0          2013-3-14 3月汇总
100     0          2013-4-14
100     0          2013-4-14
200     0          2013-4-14 4月14日汇总
200     0          2013-4-14 4月汇总
1070     1400         总汇总

#方法一

SELECT *
    FROM(
       SELECT tMoney0,tMoney1,tranDate,NULL AS remark
       FROM tempTB
       UNION ALL
SELECT SUM(tMoney0),SUM(tMoney1),tranDate ,CONCAT(tranDate,"日汇总")
       FROM tempTB
       GROUP BY tranDate
       UNION ALL
SELECT SUM(tMoney0),SUM(tMoney1),MAX(tranDate) ,CONCAT(DATE_FORMAT(tranDate,"%Y-%c"),"月汇总")
       FROM tempTB
       GROUP BY DATE_FORMAT(tranDate,"%Y-%m")
       UNION ALL
      SELECT SUM(tMoney0),SUM(tMoney1),NULL ,"总汇总"
       FROM tempTB
      ) t
ORDER BY tranDate IS NULL,tranDate,remark ;
      
#方法二      
SELECT *  FROM (
SELECT tMoney0,tMoney1,tranDate,NULL AS remark FROM tempTB 
UNION ALL
SELECT SUM(tMoney0),SUM(tMoney1),tranDate,CONCAT(tranDate,"日汇总") FROM tempTB GROUP BY tranDate  WITH ROLLUP 
UNION ALL
SELECT SUM(tMoney0),SUM(tMoney1),MAX(tranDate),CONCAT(DATE_FORMAT(tranDate,"%Y-%c"),"月汇总")  FROM tempTB GROUP BY DATE_FORMAT(tranDate,"%Y-%m") 
) AS t 
ORDER BY tranDate IS NULL,tranDate,remark;
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像