mysql中數(shù)據(jù)統(tǒng)計(jì)的技巧備忘錄
mysql 作為常用數(shù)據(jù)庫(kù),操作賊六是必須的,對(duì)于數(shù)字操作相關(guān)的東西,那是相當(dāng)方便,本節(jié)就來(lái)拎幾個(gè)統(tǒng)計(jì)案例出來(lái)供參考!
order訂單表,樣例如下:
CREATE TABLE `yyd_order` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `order_nid` varchar(50) NOT NULL, `status` varchar(50) NOT NULL DEFAULT '0', `money` decimal(20,2) NOT NULL DEFAULT '0.00', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `userid` (`user_id`), KEY `createtime` (`create_time`), KEY `updatetime` (`update_time`) ) ENGINE=InnoDB;
1. 按天統(tǒng)計(jì)進(jìn)單量,date_format
SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date, COUNT(1) t_count FROM t_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d');
2. 按小時(shí)統(tǒng)計(jì)進(jìn)單量
SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_hour, COUNT(1) t_count FROM t_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H');
3. 同比昨天進(jìn)單量對(duì)比,order by h, date
SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_date, COUNT(1) t_count FROM yyd_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') ORDER BY DATE_FORMAT(t.`create_time`, '%H'),DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H');

4. 環(huán)比上周同小時(shí)進(jìn)單,date in ,order by
SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H') t_date, COUNT(1) t_count FROM yyd_order t WHERE
DATE_FORMAT(t.`create_time`,'%Y-%m-%d') IN ('2018-05-03','2018-05-11') GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H')
ORDER BY DATE_FORMAT(t.`create_time`, '%H'),DATE_FORMAT(t.`create_time`, '%Y-%m-%d %H');

5. 按照remark字段中的返回值進(jìn)行統(tǒng)計(jì),group by remark like ...
SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date, COUNT(1) t_count, SUBSTRING_INDEX(SUBSTRING_INDEX(t.`msg`, '{', -1), '}', 1) t_rsp_msg FROM
cmoo_tab t WHERE t.`create_time` > '2018-05-17' AND t.`rsp_msg` LIKE '%nextProcessCode%C9000%'
GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d'),SUBSTRING_INDEX(SUBSTRING_INDEX(t.`rsp_msg`, '{', -1), '}', 1);

6. 統(tǒng)計(jì)每小時(shí)的各金額的區(qū)間數(shù)統(tǒng)計(jì),sum if 1 0,各自統(tǒng)計(jì)
SELECT DATE_FORMAT(t.create_time,'%Y-%m-%d') t_date, SUM(IF(t.`amount`>0 AND t.`amount`<1000, 1, 0)) t_0_1000, SUM(IF(t.`amount`>1000 AND t.`amount`<5000, 1, 0)) t_1_5000, SUM(IF(t.`amount`>5000, 1, 0)) t_5000m FROM mobp2p.`yyd_order` t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d');

7. 按半小時(shí)統(tǒng)計(jì)進(jìn)單量,floor h / 30,同理10分鐘,20分鐘
SELECT CONCAT(DATE_FORMAT(create_time, '%Y-%m-%d %H:' ),IF(FLOOR(DATE_FORMAT(create_time, '%i') / 30 ) = 0, '00','30')) AS time_scope, COUNT(*) FROM yyd_order WHERE create_time>'2018-05-11' GROUP BY time_scope ORDER BY DATE_FORMAT(create_time, '%H:%i'), DATE_FORMAT(create_time, '%Y-%m-%d') DESC ;

8. 成功率,失敗率,臨時(shí)表 join on hour
SELECT * FROM (SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date,COUNT(1) '成功數(shù)' FROM yyd_order t WHERE t.`create_time` > '2018-05-17' AND t.`status` = 'repay_yes' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d')) t1 RIGHT JOIN (SELECT DATE_FORMAT(t.`create_time`, '%Y-%m-%d') t_date,COUNT(1) '總數(shù)' FROM yyd_order t WHERE t.`create_time` > '2018-05-11' GROUP BY DATE_FORMAT(t.`create_time`, '%Y-%m-%d')) t2 ON t1.t_date=t2.t_date;

9. 更新日志表中最后條一條日志狀態(tài)值到信息表中狀態(tài),update a join b on xx set a.status=b.status where tmp group by userid tmp2,注意索引
UPDATE t_order t0 LEFT JOIN (SELECT * FROM (SELECT * FROM t_order_log t WHERE t.create_time>'2018-05-11' ORDER BY id DESC) t1 GROUP BY t1.user_id ) ON t.user_id=t2.user_id SET t0.`status`=t2.status WHERE t0.`create_time`>'2018-05-11' AND t0.`status`=10;
10. 備份表,create table as select xxx where xxx
CREATE TABLE t_m AS SELECT * FROM t_order;
11. 純改備注不鎖表,快,類型全一致
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Mysql中JSON字段的值的實(shí)現(xiàn)示例
本文中介紹了如何通過(guò)SQL語(yǔ)句查詢JSON字段中的特定數(shù)據(jù),如查詢數(shù)組中的元素,提取映射中的值,以及使用不同的JSON函數(shù)來(lái)處理數(shù)據(jù),感興趣的可以了解一下2024-09-09
mysql 動(dòng)態(tài)生成測(cè)試數(shù)據(jù)
mysql 動(dòng)態(tài)生成測(cè)試數(shù)據(jù)的語(yǔ)句,方便測(cè)試數(shù)據(jù)。2009-08-08
一文學(xué)會(huì)Mysql數(shù)據(jù)庫(kù)備份與恢復(fù)
數(shù)據(jù)庫(kù)備份是在數(shù)據(jù)丟失的情況下能及時(shí)恢復(fù)重要數(shù)據(jù),防止數(shù)據(jù)丟失的一種重要手段,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫(kù)備份與恢復(fù)的相關(guān)資料,需要的朋友可以參考下2022-05-05
MySQL主從同步機(jī)制與同步延時(shí)問(wèn)題追查過(guò)程
這篇文章主要給大家介紹了關(guān)于MySQL主從同步機(jī)制與同步延時(shí)問(wèn)題追查的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
mysql signed unsigned和zerofill使用與區(qū)別
mysql中有符號(hào)signed,無(wú)符號(hào)unsigned與零填充zerofill,本文主要介紹了mysql signed unsigned和zerofill使用與區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
學(xué)習(xí)mysql?如何行轉(zhuǎn)列與列傳行
這篇文章主要介紹了mysql行轉(zhuǎn)列與列傳行的使用方法,幫助大家更好的理解和學(xué)習(xí)MySQL的使用,語(yǔ)句不難,但有一定的知識(shí)參考價(jià)值,需要的朋友可以參考一下,希望給你的學(xué)習(xí)帶來(lái)幫助2022-02-02
mysql中循環(huán)截取用戶信息并插入到目標(biāo)表對(duì)應(yīng)的字段中
將各個(gè)用戶對(duì)應(yīng)的屬性插入到目標(biāo)表對(duì)應(yīng)的字段中,last_update為數(shù)據(jù)更新日期2014-08-08

