1. 程式人生 > >MySQL數量查詢(Case When 應用)

MySQL數量查詢(Case When 應用)

1.單表查詢

員工表empinfo結構如下:

create table empinfo(
	Fempno varchar(20) not null primary key,
	Fempname varchar(20) not null,
	Fage number not null,
	Fsalary number  not null
);
假設該表有大於1000萬條記錄;寫一個最高效的SQL查詢語句,用一個SQL語句計算以下4種人種每種員工的數量。

fsalary > 9999 and fage >35

fsalary > 9999 and fage < 35

fsalary < 9999 and fage >35

fsalart < 9999 and fage > 35

select sum(case when tt.fsalary >9999 and tt.fage >35 
			then 1
			else 0
			end
) as  "fsalary > 9999 and fage > 35",sum(case when tt.fsalary > 9999 and tt.fage <35
			then 1
			else 0
			end
) as "fsalary > 9999 and fage < 35",sum(case when tt.fsalary < 9999 and tt.fage > 35
			then 1
			else 0
			end
) as "fsalary < 9999 and fage > 35",sum(case when tt.fsalary < 9999 and fage <35
			then 1
			else 0
			end
)as "fsalary < 9999 and fage < 35"
from empinfo tt

2.多表聯合查詢

請用一個SQL語句得出結果:從table1、table2中取出如table3所列格式資料(注意提供的資料及結果不準確,只是作為一個格式參考)。

表結構如下:

table1:

月份(month)		部門(dep)		業績(yj)
一月份			01				10
一月份			02				10
一月份			03				5
二月份			02				8
二月份			04				9
三月份			03				8

table2:
部門(dep)			部門名稱(dname)
01					國內業務一部
02					國內業務二部
03					國內業務三部
04					國內業務部

table3:

部門(dep)		一月份		二月份		三月份
01				10			null		null
02				10			8			null
03				null		5			8
04				null		null		9

SQL語句:
select a.dep,sum(case when b.month=1 then b.yj else 0 end) as "一月份",
sum(case when b.month=2 then b.yj else 0 end) as "二月份",
sum(case when b.month=3 then b.yj else 0 end) as "三月份",
sum(case when b.month=4 then b.yj else 0 end) as "四月份",
sum(case when b.month=5 then b.yj else 0 end) as "五月份",
sum(case when b.month=6 then b.yj else 0 end) as "六月份",
sum(case when b.month=7 then b.yj else 0 end) as "七月份",
sum(case when b.month=8 then b.yj else 0 end) as "八月份",
sum(case when b.month=9 then b.yj else 0 end) as "九月份",
sum(case when b.month=10 then b.yj else 0 end) as "十月份",
sum(case when b.month=11 then b.yj else 0 end) as "十一月份",
sum(case when b.month=12 then b.yj else 0 end) as "十二月份",
from table2 a left join table1 b on a.dep=b.dep


相關推薦

MySQL數量查詢Case When 應用

1.單表查詢 員工表empinfo結構如下: create table empinfo( Fempno varchar(20) not null primary key, Fempname varchar(20) not null, Fage number not n

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 '

【NCRE】---拼接SQL語句Case....When語句

#region 將答案和分數更新到資料庫中 李少然 2015年12月26日10:09:07 /// <summary> /// 將答案和分數更新到資料庫中 /// </summary> /// <param na

SQL中的條件判斷語句case when zhen用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case

性別欄位在資料庫中儲存數字,查詢時,如何查詢出數字對應的男和女?case when應用

今天敲程式碼的時候,剛好遇到這個問題,寫部落格記一下。 情況如下:性別欄位在資料庫中儲存的是數字,男對應1,女對應0。然後,查詢的時候,我想查詢出男和女兩個字,而不是1和0。 一開始,我寫的sql語句,是直接從查詢出性別對應的數字,sql語句如下: SELECT Em

MYSQL-----控制流程函式case when...then..else..end

MySQL有一些內建的控制流程函式,可以在SQL語句中使用這些函式來更加準確和直接的結果。 第一種語法: case when [value] then result .................. end  第二種語法: case when [condition] then r

MySQL範圍查詢日期

查詢 舉例 jpg 結構 datetime 日期 span mes sta MySQL的時間和日期類型 數據類型 字節數 數據格式 year 1 YYYY date 4 YYYY-MM-DD time 3 HH:MM:SS datetime 8 YY

MySQL查詢 - pt-query-digest詳解慢查詢日誌 pt-query-digest 慢日誌分析

進行 www summary exec 存儲 response 狀態 rep ota 隨筆 - 66 文章 - 0 評論 - 19 MySQL慢查詢(二) - pt-query-digest詳解慢查詢日誌 一、簡介 pt-que

SQL中的條件判斷語句case when zhen if,ifnull用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case部分將會被自動忽略。

大聊MySQL查詢1

學習MySQL有一段時間了,寫下這篇部落格,一來為了總結筆記方便以後查閱,二來希望和大家交流,有不對的地方希望各位批評指正。(本文中用到的資料庫下載:https://download.csdn.net/my) ###########################################

Mysql 分組查詢group by

分組查詢 1 語法 select 查詢列表 from 表 【where 篩選條件】 group by 分組的欄位【order by 排序的欄位】; 2 特點 1、和分組函式一同查詢的欄位必須是group by後出現的欄位 2、篩選分為兩類:分組前篩選和分組

MySql資料庫查詢——子查詢

1.帶IN關鍵字的子查詢 例如:查詢t_book表和t_booktype表的內容: select * from t_book; select * from t_booktype; 若要查詢bookTypeId在t_booktype表中的資料: select

MySql資料庫查詢——合併查詢

1.合併查詢結果 將兩張表的資料合併在一起 先檢視兩張表的內容:select * from t_book; select * from t_booktype; 將兩張表的id屬性合併,有

MySQL 分組查詢group by 的用法淺析

資料庫的表結構如下:   #列出每個部門最高薪水的結果 SELECT szDepartment, MAX(nSalary) AS nMaxSalary FROM test.department GROUP BY szDepartment;

人工智慧mysql—— mysql高階查詢索引、多表、連線

一、索引    1、索引的定義                對資料庫中表的一列或者多列的值進行排序的一種結構(MySQL中索引用Btree方式)    2、索引的優點                加快資料的檢索速度    3、索引的缺點                a、

MySQL巧用sum,case...when...優化統計查詢

最近在做專案,涉及到開發統計報表相關的任務,由於資料量相對較多,之前寫的查詢語句查詢五十萬條資料大概需要十秒左右的樣子,後來經過老大的指點利用sum,case...when...重寫SQL效能一下子提高到一秒鐘就解決了。這裡為了簡潔明瞭的闡述問題和解決的方法,我簡化一下需求模型。 現在資料庫有一

MySQL查詢

一、簡介 開啟慢查詢日誌,可以讓MySQL記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。 二、引數說明 slow_query_log 慢查詢開啟狀態 slow_query_log_file 慢查詢日誌存放的位置(這個目錄需要M

mysql查詢之from後面的子查詢

員工表中只有3個欄位,員工號、姓名、月薪。要完成示例1,sql為:select * from ( select empno,ename,sal from emp )員工表中沒有年薪,該怎樣完成示例2呢?select * from ( select empno,

<MySQL學習七>使用子查詢未完待續

  摘要: 本篇部落格僅作為筆記,如有侵權,請聯絡,立即刪除(網上找部落格學習,然後手記筆記,因紙質筆記不便儲存,所以儲存到網路筆記)。 一、子查詢 注意:版本要求:MySQL4.1引入了對子查詢的支援,所以要想使用本章描述的SQL,必須使用MySQL4.1或更高階的版本。   SELECT語句是SQL

mysql查詢之主查詢和子查詢的執行順序

那麼,什麼是相關子查詢呢?舉個例子,查詢員工表中薪水大於本部門平均薪水的員工。首先構建思路,說到底還是查詢員工,所以主查詢是查詢員工,然後在where後面增加子查詢,查詢薪水大於本部門平均薪水。開始寫sql,如下:問題來了,查詢某個部門的薪水,公司有很多個部門,所以引數不能寫