国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

利用MySQL統計一列中不同值的數量方法示例

2024-07-24 13:13:10
字體:
來源:轉載
供稿:網友

前言

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

mysql,列數量,查詢數量,分組后統計數量

其中 origin 是用戶來源,其中的值有 iPhone 、Android 、Web 三種,現在需要分別統計由這三種渠道注冊的用戶數量。

解決方案1

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

用 where 語句分別統計各自的數量。

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

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

解決方案2

我們知道 count 不僅可以用來統計行數,也能統計列值的數量,例如:

統計 user_operation_log 有多少行:

SELECT count(*) FROM user_operation_log

統計 origin 這列值不為 NULL 的數量:

SELECT count(origin) FROM user_operation_log

所以我們可以利用這個特性來實現上面的需求

第一種寫法(用 count 實現)

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

查詢結果

mysql,列數量,查詢數量,分組后統計數量

第二種寫法(用 sum 實現)

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

查詢結果

mysql,列數量,查詢數量,分組后統計數量

第三種寫法(改寫 sum)

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

查詢結果

mysql,列數量,查詢數量,分組后統計數量

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

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

查詢結果

mysql,列數量,查詢數量,分組后統計數量

至此,已經達到了我們的需求。

總結

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


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 子洲县| 丽水市| 黄浦区| 武平县| 宾阳县| 怀宁县| 沽源县| 瑞昌市| 玛纳斯县| 仪陇县| 酒泉市| 玉山县| 旌德县| 博罗县| 上蔡县| 丹棱县| 石林| 富宁县| 榆中县| 梓潼县| 来凤县| 松原市| 区。| 平昌县| 安达市| 石嘴山市| 合肥市| 马尔康县| 仪征市| 武夷山市| 佛坪县| 天津市| 河津市| 都安| 峨山| 醴陵市| 大足县| 乌兰浩特市| 榕江县| 仪陇县| 昂仁县|