最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用MySQL統(tǒng)計一列中不同值的數(shù)量方法示例

 更新時間:2017年04月28日 14:16:14   作者:huanxi  
這篇文章主要給大家介紹了利用MySQL統(tǒng)計一列中不同值的數(shù)量的幾種解決方法,每種方法都給了詳細的示例代碼供大家參考學習,相信對大家具有一定的參考價值,需要的朋友們下面跟隨小編一起來看看吧。

前言

本文實現(xiàn)的這個需求其實十分普遍,舉例來說,我們存在一個用戶來源表,用來標記用戶從哪個渠道注冊進來。表結(jié)構(gòu)如下所示…

其中 origin 是用戶來源,其中的值有 iPhone 、Android 、Web 三種,現(xiàn)在需要分別統(tǒng)計由這三種渠道注冊的用戶數(shù)量。

解決方案1

SELECT count(*)
FROM user_operation_log
WHERE origin = 'iPhone';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Android';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Web';

用 where 語句分別統(tǒng)計各自的數(shù)量。

這樣查詢的量有點多了,如果這個值有 10 個呢,那還得寫 10 條相似的語句,很麻煩。

有沒有一條語句就搞定的呢?于是去查了些資料。

解決方案2

我們知道 count 不僅可以用來統(tǒng)計行數(shù),也能統(tǒng)計列值的數(shù)量,例如:

統(tǒng)計 user_operation_log 有多少行:

SELECT count(*) FROM user_operation_log

統(tǒng)計 origin 這列值不為 NULL 的數(shù)量:

SELECT count(origin) FROM user_operation_log

所以我們可以利用這個特性來實現(xiàn)上面的需求

第一種寫法(用 count 實現(xiàn))

SELECT
 count(origin = 'iPhone' OR NULL) AS iPhone,
 count(origin = 'Android' OR NULL) AS Android,
 count(origin = 'Web' OR NULL)  AS Web
FROM user_operation_log;

查詢結(jié)果

第二種寫法(用 sum 實現(xiàn))

SELECT
 sum(if(origin = 'iPhone', 1, 0)) AS iPhone,
 sum(if(origin = 'Android', 1, 0)) AS Android,
 sum(if(origin = 'Web', 1, 0))  AS Web
FROM user_operation_log;

查詢結(jié)果

第三種寫法(改寫 sum)

SELECT
 sum(origin = 'iPhone') AS iPhone,
 sum(origin = 'Android') AS Android,
 sum(origin = 'Web')  AS Web
FROM user_operation_log;

查詢結(jié)果

第四種寫法(來自掘金用戶 杰夫 的答案)

SELECT origin,count(*) num FROM user_operation_log GROUP BY origin;

查詢結(jié)果


至此,已經(jīng)達到了我們的需求。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

社会| 台北县| 静安区| 寿阳县| 湄潭县| 宜兰县| 五峰| 葫芦岛市| 廉江市| 凤冈县| 随州市| 建始县| 杭州市| 平潭县| 即墨市| 东乌珠穆沁旗| 喀什市| 兴化市| 交口县| 扶余县| 阿勒泰市| 凤翔县| 犍为县| 邹平县| 白水县| 许昌县| 教育| 阆中市| 敦煌市| 新田县| 海淀区| 龙里县| 肇东市| 绵竹市| 盘锦市| 靖西县| 阿拉善右旗| 镇江市| 利川市| 普宁市| 禄丰县|