MySQL按日期分組並統計截止當前時間的總數spa
建表語句code
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_reg -- ---------------------------- DROP TABLE IF EXISTS `t_reg`; CREATE TABLE `t_reg` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID編號', `REG_TIME` datetime(0) NULL DEFAULT NULL COMMENT '時間', `REG_COUNT` int(11) NULL DEFAULT NULL COMMENT '數量', PRIMARY KEY (`ID`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of t_reg -- ---------------------------- INSERT INTO `t_reg` VALUES (1, '2019-05-01 08:08:12', 1); INSERT INTO `t_reg` VALUES (2, '2019-05-02 00:09:09', 10); INSERT INTO `t_reg` VALUES (3, '2019-05-02 13:08:08', 2); INSERT INTO `t_reg` VALUES (4, '2019-05-03 15:08:05', 4); INSERT INTO `t_reg` VALUES (5, '2019-05-03 17:08:08', 6); INSERT INTO `t_reg` VALUES (6, '2019-05-16 21:01:12', 4); INSERT INTO `t_reg` VALUES (7, '2019-05-03 05:08:09', 11); SET FOREIGN_KEY_CHECKS = 1;
表結構以下所示:REG_COUNT 表示當天新增的用戶數blog
如今的需求是這樣的:按天天分組,查詢當天新增的用戶總數和截止到當前時間新增的用戶總數,結果以下:ci
SQL語句以下:class
SELECT reg_time, min_total AS '小計', @total := @total + min_total AS '總計' FROM ( SELECT date( reg_time ) AS reg_time, sum( reg_count ) AS min_total FROM t_reg GROUP BY date( reg_time ) ) AS temp, ( SELECT @total := 0 ) AS T1 ORDER BY reg_time;
解釋一下:SELECT @total := 0,,這句的意思是給臨時變量@total設置值爲0;變量
如此便可得出上面的結果知足需求.date