【統計】SQL之case when then else end用法(用於分類統計)(一)
case具有兩種格式。簡單case函式和case搜尋函式。
--簡單case函式
case sex
when '1' then '男'
when '2' then '女’
else '其他' end
--case搜尋函式
case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end
這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。
還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case部分將會被自動忽略。
--比如說,下面這段sql,你永遠無法得到“第二類”這個結果
case when col_1 in ('a','b') then '第一類'
when col_1 in ('a') then '第二類'
else '其他' end
下面例項演示:
首先建立一張users表,其中包含id,name,sex三個欄位,表內容如下:
SQL> drop table users purge;
drop table users purge
ORA-00942: 表或檢視不存在
SQL> create table users(id int,name varchar2(20),sex number);
Table created
SQL> insert into users(id,name) values(1,'張一');
1 row inserted
SQL> insert into users(id,name,sex) values(2,'張二',1);
1 row inserted
SQL> insert into users(id,name) values(3,'張三');
1 row inserted
SQL> insert into users(id,name) values(4,'張四');
1 row inserted
SQL> insert into users(id,name,sex) values(5,'張五',2);
1 row inserted
SQL> insert into users(id,name,sex) values(6,'張六',1);
1 row inserted
SQL> insert into users(id,name,sex) values(7,'張七',2);
1 row inserted
SQL> insert into users(id,name,sex) values(8,'張八',1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from users;
ID NAME SEX
--------------------------------------- -------------------- ----------
1 張一
2 張二 1
3 張三
4 張四
5 張五 2
6 張六 1
7 張七 2
8 張八 1
8 rows selected
1、上表結果中的"sex"是用程式碼表示的,希望將程式碼用中文表示。可在語句中使用case語句:
SQL> select u.id,u.name,u.sex,
2 (case u.sex
3 when 1 then '男'
4 when 2 then '女'
5 else '空的'
6 end
7 )性別
8 from users u;
ID NAME SEX 性別
--------------------------------------- -------------------- ---------- ------
1 張一 空的
2 張二 1 男
3 張三 空的
4 張四 空的
5 張五 2 女
6 張六 1 男
7 張七 2 女
8 張八 1 男
8 rows selected
2、如果不希望列表中出現"sex"列,語句如下:
SQL> select u.id,u.name,
2 (case u.sex
3 when 1 then '男'
4 when 2 then '女'
5 else '空的'
6 end
7 )性別
8 from users u;
ID NAME 性別
--------------------------------------- -------------------- ------
1 張一 空的
2 張二 男
3 張三 空的
4 張四 空的
5 張五 女
6 張六 男
7 張七 女
8 張八 男
8 rows selected
3、將sum與case結合使用,可以實現分段統計。
如果現在希望將上表中各種性別的人數進行統計,sql語句如下:
SQL> select 2 sum(case u.sex when 1 then 1 else 0 end)男性, 3 sum(case u.sex when 2 then 1 else 0 end)女性, 4 sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性別為空 5 from users u; 男性 女性 性別為空 ---------- ---------- ---------- 3 2 0 -------------------------------------------------------------------------------- SQL> select 2 count(case when u.sex=1 then 1 end)男性, 3 count(case when u.sex=2 then 1 end)女, 4 count(case when u.sex <>1 and u.sex<>2 then 1 end)性別為空 5 from users u; 男性 女 性別為空 ---------- ---------- ---------- 3 2 0
附:我實驗的結果
(注意性別為空的地方,應該判斷u.sex is null 而不能用 not in或不等於符號去排除)
轉載自:https://www.cnblogs.com/qlqwjy/p/7476533.html
相關推薦
【統計】SQL之case when then else end用法(用於分類統計)(一)
case具有兩種格式。簡單case函式和case搜尋函式。--簡單case函式 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜尋函式 case when sex = '1' th
SQL中case when then else end用法
一、簡單用法 case具有兩種格式。簡單case函式和case搜尋函式。 簡單case函式 SELECT s.s_id, s.s_name, s.s_sex, CASE WHEN s.s_sex = '1' THEN '男' WHEN s.s_s
oracle之case when then else end用法詳解
闡述 case when then else end 可以理解為java的if-else if -else。是流程控制語句或者條件控制語句,可以自定義邏輯 使用場景 對已知的資料進行邏輯分組或者進
【統計】SQL中的case when then else end用法(二)
轉載自:https://www.cnblogs.com/prefect/p/5746624.html(一)和(二)的文章開頭一樣,後面例子不一樣Case具有兩種格式。簡單Case函式和Case搜尋函式。--簡單Case函式 CASE sex WHEN '1'
【語法】SQL中的case when then else end用法-解決一個字段根據條件取不同值
where 運行 pos 功能 enter cnblogs logs wro img Case具有兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數 CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN
SQL中的case when then else end用法
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE
SQL 中case when ...then...else ...and用法
CASE WHEN 基本概念 Case具有兩種格式:簡單Case函式和Case搜尋函式。 簡單Case函式: CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END Case搜尋函式:
SQL利用Case When Then Else End 多條件判斷
Select Case When a is not null then a When b is not null then b When c is not null then c When d is not null then d
oracle中的case when then else end 用法
values ID 你在 union 形式 sql語句 建議 而是 acl Case when 的用法,簡單Case函數 簡單CASE表達式,使用表達式確定返回值. 語法: CASE search_expression WHEN expression1 T
mysql 分組、 操作查詢結果case when then else end用法舉例
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式
mysql操作查詢結果case when then else end用法舉例
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHEN sex = '1' THEN '
oracle case when then else end用法
語法: CASE search_expression 當表達1那麼結果1 當表達2那麼結果2 比如客戶型別個人0,機構1,產品2對應的證件型別分別對應1018,1019,1355字典項。 下面舉例說明具體實現:如何把某客戶型別對應的證件型別翻譯成中文
SQL之case when then用法(用於分類統計)
char purge 格式 但是 統計 spa 比較 log 永遠 ase具有兩種格式。簡單case函數和case搜索函數。 --簡單case函數 case sex when ‘1‘ then ‘男‘ when ‘2‘ then ‘女’
SQL之case when then用法
case具有兩種格式: 簡單case函式; case搜尋函式; --簡單case函式 case sex when '1' then '男' when
當case when then else end 語句遇上sum或count等統計函式(轉載)
轉載:https://blog.csdn.net/qq_18875541/article/details/69392355 事情是因為這樣了——我需要按2個維度來分組,求出按這2個維度分組的總數情況(count),但同時也需要在這2個維度下求出按不同條件得出的總數,這些不同條件下分別
SQL中的case when then else end詳細用法
Case具有兩種格式。簡單Case函式和Case搜尋函式 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHE
當case when then else end 語句遇上sum或count等統計函式
事情是因為這樣了——我需要按2個維度來分組,求出按這2個維度分組的總數情況(count),但同時也需要在這2個維度下求出按不同條件得出的總數,這些不同條件下分別得出的總數相加的和即為不加上條件的情況下的總數。比如: 假設有一張tablename表格,資料結構如下: 欄位: id A B c
mysql中LOCATE和CASE WHEN...THEN...ELSE...END結合用法
else case put asdf span 項目 oos bstr col 之前項目中需要寫一個sql,就是查出某個調研詳情中,選A答案,B答案,C答案...F答案的人各有多少人,這個sql也是費了很大的力氣才寫出來,故記下來,方便以後使用。 其中tbl_researc
MySql 中 case when then else end 的用法
sta 結束 name cas ber sel 如果 user num MySql 中 case when then else end 的用法 解釋: SELECT case ----------
MySql 中關鍵字 case when then else end 的用法
img closed sta bsp sql hid not weight one 解釋: 1 SELECT 2 case -------------如果 3 when sex=‘1‘ then