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,如下:問題來了,查詢某個部門的薪水,公司有很多個部門,所以引數不能寫