mysql if 流程控制函數的使用

使用場景:

 

eg1:按照同一字段的不同值進行分類,統計其他字段!

ID 分類 金額
1 支出 100
1 收入 200
1 收入 299

假如數據庫中有表table,這是一張記賬表,現在要求用SQL算出ID爲1的用戶的總收入和總支出各是多少

那麼就要用到MySQL的流程控制函數了:

select id,

            sum(IF(分類='收入',金額,0)) as 總收入,

            sum(IF(分類!='收入',金額,0)) as 總支出

from table where id=1

如果第一個參數 分類='收入' 成立 就對第二個參數所在列求和,如果不成立的就返回0,三個參數都要寫上.第二個sum就是分類不爲收入的了.

 

eg2:這個更詳細  https://www.jb51.net/article/112492.htm

表:user_operation_log

origin type uid
iphone 1 384284
android 1 384283
iphone 1 384282
android 1 384281

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

方案一:用 count 實現:

SELECT

 count(origin = 'iPhone' OR NULL) AS iPhone,

 count(origin = 'Android' OR NULL) AS Android,

 count(origin = 'Web' OR NULLAS Web

FROM user_operation_log;

方案二:(用 if 實現):

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;

方案三:

SELECT

 sum(origin = 'iPhone') AS iPhone,

 sum(origin = 'Android') AS Android,

 sum(origin = 'Web'AS Web

FROM user_operation_log;

方案四:

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

 

發佈了10 篇原創文章 · 獲贊 1 · 訪問量 4516
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章