mysql 统计sql

1、按照月份统计数据

SELECT DATE_FORMAT(d.create_time,\'%Y-%m\') months,COUNT(id) AS scannum FROM detail d GROUP BY months;

select DATE_FORMAT(create_time,\'%Y%u\') weeks,count(caseid) count from tc_case group by weeks; 
select DATE_FORMAT(create_time,\'%Y%m%d\') days,count(caseid) count from tc_case group by days; 
select DATE_FORMAT(create_time,\'%Y%m\') months,count(caseid) count from tc_case group by months;

1、按照月份:
select sum(total_amount) as total, date_format(stat_date, \'%Y-%m\')  from week_report WHERE `stat_date` BETWEEN \'2016-11-02\' AND \'2017-04-30\' group by date_format(stat_date, \'%Y-%m\');
select sum(total_amount) as total,date_format(stat_date, \'%Y-%m\')   from week_report WHERE `stat_date` BETWEEN \'2016-12-11\' AND \'2016-12-22\' group by date_format(stat_date, \'%Y-%m\');
获得按照月份分组进行汇总的数据。

concat()连接字符串

-- month
select CONCAT(YEAR(stat_date),\'_\',DATE_FORMAT(stat_date,\'%m\')) months ,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx
WHERE `stat_date` BETWEEN \'2016-01-02\' AND \'2017-05-30\' group by months;

-- 季度
select CONCAT(YEAR(stat_date),\'_\',quarter(stat_date)) qu,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx
WHERE `stat_date` BETWEEN \'2016-01-02\' AND \'2017-05-30\' group by qu;

-- 周
select CONCAT(YEAR(stat_date),\'_\',DATE_FORMAT(stat_date,\'%U\')) weeks,sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx
WHERE `stat_date` BETWEEN \'2016-01-02\' AND \'2017-05-30\' group by weeks;

-- 天
select CONCAT(YEAR(stat_date),\'_\',DATE_FORMAT(stat_date,\'%m\'),\'_\',DATE_FORMAT(stat_date,\'%d\')) days, sum(total_amount) as count_amount, sum(total_new_user) as count_new_user, sum(da_active_user) as count_active_user from xxx
WHERE `stat_date` BETWEEN \'2016-01-02\' AND \'2017-05-30\' group by days;

2、按分类统计每种总数,并统计总数

SELECT IFNULL(i.`summary`,\'total\') total,i.`summary`,COUNT(i.`id`)

FROM relation r LEFT JOIN info i ON r.`bug_id`=i.`id` LEFT _detail d ON d.`plan_id`=r.`planid`

WHERE r.`isnew`=1 AND (DATE_FORMAT(d.`create_time`,\'%m\')=\'04\') GROUP BY i.`summary` WITH ROLLUP;

mysql> select ifnull(ybbh,\'total\'),count(1) from jbxx group by ybbh with rollup;
+----------------------+----------+
| ifnull(ybbh,\'total\') | count(1) |
+----------------------+----------+
| 00                   |        1 |
| 12                   |        2 |
| 13                   |        3 |
| 31                   |        1 |
| 99                   |        2 |
| total                |        9 |
+----------------------+----------+
6 rows in set (0.00 sec)