婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Mysql按條件計數多種實現方法詳解

Mysql按條件計數多種實現方法詳解

熱門標簽:地圖標注客戶付款 新鄉智能外呼系統好處 咸陽防封電銷卡 臨沂做地圖標注 石家莊400電話辦理公司 廣東400企業電話申請流程 宜賓全自動外呼系統廠家 申請400電話電話價格 許昌外呼增值業務線路

最近在給某網站的后臺添加一系列的統計功能,遇到很多需要按條件計數的情況。嘗試了幾種方法,下面簡要記錄,供大家參考。

問題描述

為使討論簡單易懂,我將問題稍作簡化,去掉諸多的背景。

從前有一個皇帝,他有50個妃子,這些妃子很沒有天理的給他生了100,000個兒子,于是,皇帝很苦惱,海量的兒子很難管理,而且,他想知道每個妃子給他生了多少個兒子,從而論功行賞,這很難辦。于是,皇帝請了一個程序員幫他編了一個程序,用數據庫來存儲所有的兒子的信息,這樣就可以用程序來統計和管理啦。

數據庫的結構如下:

id 皇子的唯一編號
mother 皇子母親的唯一編號

皇帝把妃子分成了兩個等級,天宮娘娘(編號小于25)和地宮娘娘(編號大于等于25),他想知道天宮娘娘們和地宮娘娘們的生育能力孰強孰弱。于是,程序員開始寫SQL Query了。

方法1:使用GROUP BY

SQL Query

SELECT COUNT(*) FROM `prince` GROUP BY `mother` > 24;

執行結果

count(*)
50029
49971

在100,000行數據上的運行時間:0.0335 秒

分析

這種GROUP BY方法的最大問題在于:無法區分所得到的結果。這兩個數字哪一個是天宮娘娘們所生的皇子數,哪一個是地宮娘娘們所生的皇子數呢?不知道。所以,盡管它統計出了總數,但是沒有什么意義。

因此,為了區分統計結果,必須要把條件 mother > 24 也作為一個字段在結果集中作為一個字段體現出來,修改后的sql如下:

SELECT COUNT(*) AS `number`, `mother` > 24 AS `type` FROM `prince` GROUP BY `mother` > 24;

執行結果

number type
50029 0
49971 1

條件表達式作為字段時,該字段的值就是該條件表達式的值,因此,對應我們的例子,type = 1 也就是表示 mother > 24 的值為1,因此,第二行中的數字代表地宮娘娘們所生的皇子數。

經過修改后,我們看出,天宮娘娘們略勝一籌。

優缺點

缺點是顯而易見的,由于使用了條件表達式作為分組依據,它只能做二元的劃分,對于要分成多類進行統計的情況不能夠勝任。比如要分別統計1~10號、11~24號,25號~50號妃子的產子數,就無法實現了。

另外,由于使用了GROUP BY,因此涉及到排序,執行時間上要更長。

我暫時沒有發現這種方法的優點。

方法2:使用嵌套的SELECT

使用嵌套的SELECT也可以達到目的,在每個SELECT子句中統計一個條件下的數據,然后用一個主SELECT把這些統計數據整合起來。

SQL Query

SELECT 
  ( SELECT COUNT( * ) FROM `prince` WHERE `mother` >24 ) AS `digong`, 
  ( SELECT COUNT( * ) FROM `prince` WHERE `mother` =24 ) AS `tiangong`

執行結果

digong tiangong
49971 50029

在100,000行數據上的運行時間:0.0216 秒

分析

這種嵌套SELECT的方法非常直觀,就是分別統計各個條件下的數值,最后進行匯總,通俗易懂,跟自然語言沒啥區別了。

優缺點

優點就是直觀,而且速度也比GROUP BY要快。雖然是3條SELECT語句,看起來比GROUP BY的方案多了2條語句,但是它不涉及到排序,這就節省了很多時間。

缺點可能就是語句稍多,對語句數量有潔癖的同學可能會比較不舒服。

方法3:使用CASE WHEN

CASE WHEN語句的功能很強大,可以定義靈活的查詢條件,很適合進行分類統計。

SQL Query

SELECT 
  COUNT( CASE WHEN `mother` >24 THEN 1 ELSE NULL END ) AS `digong`, 
  COUNT( CASE WHEN `mother` =24 THEN 1 ELSE NULL END ) AS `tiangong`
FROM prince

執行結果

digong tiangong
49971 50029

在100,000行數據上的運行時間:0.02365825 秒

分析

此方法的關鍵在于

COUNT( CASE WHEN `mother` >24 THEN 1 ELSE NULL END )

這里的COUNT和CASE WHEN聯合使用,做到了分類計數。先使用CASE WHEN,當滿足條件時,將字段值設置為 1, 不滿足條件時,將字段值設置為NULL,接著COUNT函數僅對非NULL字段進行計數,于是,問題解決。

優缺點

優點嘛,此方法也不涉及到排序,因此運行時間上與方法2相當,SELECT語句減少到了 1 條。

缺點就是語句比較長,對語句長度有潔癖的同學可能會比較不舒服。

總結

對于確定分類的按條件計數,可以盡量不用GROUP BY,從而避免排序動作,加速Query的執行。

如果需要根據某個字段的值進行分類,而該字段的值是可變的,比如皇帝要統計每一個妃子的產子數,而他可能不停的再娶很多妃子,這種情況下,使用方法2和方法3就不太靈光了,還是使用一個GROUP BY來得簡單便捷。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 兩種方法實現mysql分組計數,范圍匯總
  • 詳解mysql 獲取某個時間段每一天、每一個小時的統計數據
  • MySQL按時間統計數據的方法總結
  • mysql 獲取規定時間段內的統計數據
  • MySQL中實現高性能高并發計數器方案(例如文章點擊數)
  • Mysql auto_increment 重新計數(讓id從1開始)
  • 用PHP和MYSQL建立計數器過程詳解

標簽:鷹潭 鎮江 合肥 北京 貴州 日照 阜新 臺灣

巨人網絡通訊聲明:本文標題《Mysql按條件計數多種實現方法詳解》,本文關鍵詞  Mysql,按,條件,計數,多種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql按條件計數多種實現方法詳解》相關的同類信息!
  • 本頁收集關于Mysql按條件計數多種實現方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色婷婷综合五月| 欧美日韩aaaaa| 日本午夜精品一区二区三区电影| 亚洲国产一区二区a毛片| 亚洲高清三级视频| 日本成人在线一区| 成人黄色在线网站| 欧美日韩综合在线免费观看| 日韩欧美在线不卡| 国产精品乱码一区二区三区软件| 最新久久zyz资源站| 亚洲综合在线第一页| 男人的天堂久久精品| 国产精品资源网站| 日本韩国一区二区三区视频| 欧美不卡一区二区| 一级日本不卡的影视| 久久免费视频色| 亚洲免费电影在线| 日韩影视精彩在线| 久久av老司机精品网站导航| 奇米影视一区二区三区| 不卡的av在线| 欧日韩精品视频| 欧美精品丝袜久久久中文字幕| 欧美老年两性高潮| 日韩一区二区三区免费看| 成人欧美一区二区三区白人 | 国产成人在线网站| 国产suv精品一区二区883| 91精品国产色综合久久不卡电影| 欧美sm极限捆绑bd| 一区二区欧美精品| 蜜桃视频在线观看一区| 色8久久精品久久久久久蜜| 欧美一区二区女人| 亚洲国产一区视频| 国产乱人伦精品一区二区在线观看| 欧美日韩电影一区| 国产拍揄自揄精品视频麻豆| 伊人色综合久久天天人手人婷| 日韩高清欧美激情| 成人av网站免费观看| 欧美人xxxx| 久久久久97国产精华液好用吗| 自拍偷自拍亚洲精品播放| 日本va欧美va精品| 亚洲国产成人av| 日韩激情视频在线观看| 国产精品亚洲成人| 在线观看精品一区| 精品国产91乱码一区二区三区 | 91精品国产色综合久久ai换脸 | 精品夜夜嗨av一区二区三区| 粉嫩av亚洲一区二区图片| 欧美性欧美巨大黑白大战| 亚洲精品一区二区在线观看| 亚洲精品国产a久久久久久| 精品一区二区综合| 在线观看日韩精品| 国产精品美女久久久久久久久久久| 日韩中文字幕区一区有砖一区| av在线一区二区| 久久久三级国产网站| 天堂成人国产精品一区| 97aⅴ精品视频一二三区| 欧美成人综合网站| 亚洲免费观看高清完整版在线| 亚洲午夜成aⅴ人片| 久久99久久久久久久久久久| 国产麻豆91精品| 在线观看国产91| 国产日韩欧美亚洲| 蜜臀va亚洲va欧美va天堂 | 在线看日本不卡| 欧美性极品少妇| 日韩国产精品久久久久久亚洲| 91久久精品日日躁夜夜躁欧美| 亚洲成人av一区二区三区| 91日韩一区二区三区| 亚洲午夜精品网| 色婷婷亚洲一区二区三区| 日韩av电影天堂| 欧美军同video69gay| 九九精品视频在线看| 4438成人网| 国产精品系列在线观看| 精品国产91久久久久久久妲己| 成人va在线观看| 国产精品国产三级国产三级人妇 | 精品奇米国产一区二区三区| 免费在线一区观看| 国产精品麻豆久久久| 粉嫩蜜臀av国产精品网站| 精品美女一区二区| 成人黄色免费短视频| 久久久99久久| 欧美性videosxxxxx| 午夜精品免费在线| 中文字幕不卡的av| av亚洲精华国产精华精| 免费成人美女在线观看.| 精品国产成人在线影院| 欧美亚日韩国产aⅴ精品中极品| 亚洲国产日韩一区二区| 久久久五月婷婷| 99久久精品费精品国产一区二区 | 国产精品一二三四| 丝袜美腿亚洲一区二区图片| 这里是久久伊人| 色综合咪咪久久| 亚洲午夜av在线| 中文字幕欧美三区| 成人av影院在线| 国产精品丝袜91| 日韩欧美亚洲国产精品字幕久久久| 久久成人麻豆午夜电影| 久久久午夜精品理论片中文字幕| 岛国一区二区三区| 亚洲精品日韩专区silk| 91麻豆精品国产综合久久久久久| 蜜桃视频在线观看一区二区| 日本一区二区成人在线| 色香蕉成人二区免费| 天堂影院一区二区| 久久久91精品国产一区二区精品| 99精品国产一区二区三区不卡| 一区二区三区四区不卡在线 | 国产校园另类小说区| 日韩精品一区二区三区老鸭窝| 国产99精品国产| 亚洲第一会所有码转帖| 久久影院午夜论| 在线观看www91| 国产精品一级片在线观看| 国产精品网站一区| 91理论电影在线观看| 久久国产夜色精品鲁鲁99| 亚洲精品乱码久久久久久日本蜜臀| 日韩久久精品一区| 色老头久久综合| 国产精品18久久久久久久久久久久| 一区二区三区国产精华| 91精品国产91综合久久蜜臀| 97久久人人超碰| 久久99在线观看| 亚洲mv在线观看| 国产精品成人一区二区艾草| 91福利社在线观看| 成人精品一区二区三区四区| 另类小说一区二区三区| 亚洲动漫第一页| 亚洲欧美国产毛片在线| 国产精品女人毛片| 精品对白一区国产伦| 欧美丰满嫩嫩电影| 欧美午夜精品免费| 国产精品福利影院| 久久精品在这里| 欧美精品一区二区三区高清aⅴ| 欧美日本在线播放| 欧美在线一区二区| 99精品在线免费| 免费观看日韩av| 国产99久久久国产精品潘金 | 久久综合久久99| 日韩欧美中文字幕公布| 91精品麻豆日日躁夜夜躁| 欧美三级中文字| 欧美在线观看一二区| 色综合色综合色综合色综合色综合| 国产精品中文字幕一区二区三区| 日韩理论在线观看| 青青草伊人久久| 久久精品国产在热久久| 9i看片成人免费高清| 欧美精品 国产精品| 欧美日韩精品一区视频| 欧美日韩免费一区二区三区| 欧美日韩视频第一区| 欧美日本乱大交xxxxx| 欧美日本一区二区| 欧美日韩国产一级| 日本一区免费视频| 国产精品蜜臀av| 亚洲美女区一区| 香蕉加勒比综合久久| 亚洲人成精品久久久久| 一区二区久久久| 亚洲福利视频一区| 精品99一区二区三区| 国内精品伊人久久久久av一坑| 九九九精品视频| 欧美日韩一级视频| 欧美大片一区二区| 激情综合五月婷婷| 欧美日韩在线三级| 亚洲精品伦理在线| 91在线你懂得| 最新国产精品久久精品|