《Mysql應(yīng)用利用MySQL統(tǒng)計(jì)一列中不同值的數(shù)量方法示例》要點(diǎn):
本文介紹了Mysql應(yīng)用利用MySQL統(tǒng)計(jì)一列中不同值的數(shù)量方法示例,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
前言MYSQL必讀
本文實(shí)現(xiàn)的這個(gè)需求其實(shí)十分普遍,舉例來說,我們存在一個(gè)用戶來源表,用來標(biāo)記用戶從哪個(gè)渠道注冊(cè)進(jìn)來.表結(jié)構(gòu)如下所示…MYSQL必讀
MYSQL必讀
其中 origin 是用戶來源,其中的值有 iPhone 、Android 、Web 三種,現(xiàn)在需要分別統(tǒng)計(jì)由這三種渠道注冊(cè)的用戶數(shù)量.MYSQL必讀
解決方案1MYSQL必讀
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)計(jì)各自的數(shù)量.MYSQL必讀
這樣查詢的量有點(diǎn)多了,如果這個(gè)值有 10 個(gè)呢,那還得寫 10 條相似的語句,很麻煩.MYSQL必讀
有沒有一條語句就搞定的呢?于是去查了些資料.MYSQL必讀
解決方案2MYSQL必讀
我們知道 count 不僅可以用來統(tǒng)計(jì)行數(shù),也能統(tǒng)計(jì)列值的數(shù)量,例如:MYSQL必讀
統(tǒng)計(jì) user_operation_log 有多少行:MYSQL必讀
SELECT count(*) FROM user_operation_log
統(tǒng)計(jì) origin 這列值不為 NULL 的數(shù)量:MYSQL必讀
SELECT count(origin) FROM user_operation_log
所以我們可以利用這個(gè)特性來實(shí)現(xiàn)上面的需求MYSQL必讀
第一種寫法(用 count 實(shí)現(xiàn))MYSQL必讀
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é)果
MYSQL必讀
MYSQL必讀
第二種寫法(用 sum 實(shí)現(xiàn))MYSQL必讀
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é)果
MYSQL必讀
MYSQL必讀
第三種寫法(改寫 sum)MYSQL必讀
SELECT sum(origin = 'iPhone') AS iPhone, sum(origin = 'Android') AS Android, sum(origin = 'Web') AS Web FROM user_operation_log;
查詢結(jié)果
MYSQL必讀
MYSQL必讀
第四種寫法(來自掘金用戶 杰夫 的答案)MYSQL必讀
SELECT origin,count(*) num FROM user_operation_log GROUP BY origin;
查詢結(jié)果
MYSQL必讀
MYSQL必讀
至此,已經(jīng)達(dá)到了我們的需求.MYSQL必讀
總結(jié)MYSQL必讀
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)維易PHP的支持.MYSQL必讀
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5322.html