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

2021-08-29 22:52:24 字數 1260 閱讀 7206

前言

在一張表中,需要統計其中一列資料中,出現重複的記錄數。

解決方案1

select count(*)

from table

where origin = 條件1;

select count(*)

from user_operation_log

where origin = 條件2;

select count(*)

from user_operation_log

where origin = 條件3;

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

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

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

解決方案2

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

統計 table 有多少行:

select count(*) from table
統計 某 列值不為 null 的數量:

select count(列名) from table
所以我們可以利用這個特性來實現上面的需求

第一種寫法(用 count 實現)

select

count(origin = '條件1' or null) as 命名,

count(origin = '條件2' or null) as 命名,

count(origin = '條件3' or null) as 命名

from user_operation_log;

第二種寫法(用 sum 實現)

select

sum(game_id = 1) as a,

sum(game_id= 2) as b,

sum(game_id = 3) as c

from tb_game_advertisement

第四種寫法(來自掘金使用者 傑夫 的答案)

select game_id ,count(*) num from tb_game_advertisement group by game_id ;

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

前言 其中 origin 是使用者 其中的值有 iphone android web 三種,現在需要分別統計由這三種渠道註冊的使用者數量。解決方案1?12 3 4 5 6 7 8 9 selectcount fromuser operation log whereorigin iphone sele...

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

前言 其中 origin 是使用者 其中的值有 iphone android web 三種,現在需要分別統計由這三種渠道註冊的使用者數量。解決方案1?1 2345 6789 selectcount fromuser operation log whereorigin iphone selectcou...

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

前言 其中 origin 是使用者 其中的值有 iphone android web 三種,現在需要分ufhlxti別統計由這三種渠道註冊的使用者數量。解決方案1 select count from user operation log where origin iphone select coun...