1. 程式人生 > 其它 >感恩筆記之二_SQL語句擴充套件功能

感恩筆記之二_SQL語句擴充套件功能

前言導讀:
本章是對SQL語句基礎功能中,一些功能用法的擴充套件使用的總結,都是實際工作中一些經驗的積累.

1 select列查詢功能組合使用

--1 函式處理+列計算+列改名
select 函式(列) + 列名 AS  新列名
from 表名

--2 資料標定+函式處理+列計算+列改名
select CASE WHEN 函式(列) + 列 > 80   THEN  '設定字元1' 
			ELSE '設定字元2'
            END  as 新列名     
FROM 表名

2 group by 組合使用求數+求和

SELECT  列1名 , 
		COUNT(求數列) as 次數 , 
		SUM(求和列) as 總額    
		
FROM    表名
GROUP BY  列1名 

3 in 和like 功能性探索

注意:()和’’對應數字和字元的使用,兩個關鍵字的查詢內容都可以是字元或者數字
注意:預設都是字元型資料,如果要進行計算,改成數值型資料

--1 in :
①可以多個查詢,
②可以查詢字元和數字,
③能一起查,④內容完全對應

select * 
from 體檢資訊  
where 姓名 IN ('姓名1','姓名2') 

select * 
from 電話號碼  
where 姓名 IN ('134','135454') 

--2 like:
①可以多個查詢,
②可以查詢數字,
③但是要分列查詢,
④內容可以模糊查詢

select * 
from 體檢資訊 
where  姓名 like '%姓%' or 家屬年齡 like '%48%'

4 like連環查詢:篩選字元中的有用資訊

--第一步:可樂和雪碧同時存在的資料 
where 列名 like’%可樂%’  and  列名 like’%雪碧%’ 
--第二步:顯示可樂的資料和顯示雪碧的資料  
where 列名 like’%可樂%’  or   列名 like’%雪碧%’ 
--第三步:在顯示可樂和雪碧的資料同時去掉有牙膏字樣的資料
where 列名 like’%可樂%’  or 列名 like’%雪碧%’ and 列名 not like’%牙膏%’  :

5 is null資料表中空白格解析

--如果空白格中無資料:但是又不是null 那就代表空白格中的資料為0,
--如果是數值列:可以直接使用where 年齡 !='0' 姓名列不為0的列
--如果是字元的列:就可以用where 姓名  like '%_%' 姓名列不為空的列 

6 函式各位置用法

--1、函式在select中使用:建立as列名,後接where查詢,不能使用as列名,需用完整函式表示式

--2、函式在where中使用:單獨在where中使用必須完整布林表示式

--3、在order by中使用:可以使用as列名進行排序

--4、在case when中使用:出現在條件表示式中,而case語句出現在select中

--5 函式組合說明:函式結果數字+比較範圍

--函式結果數字+計算數字

--函式使用位置說明:
--函式在select中格式 :select  函式名 (列名) from 表名	
--函式在where中格式 : select  *  from 表名    where 函式名(列名)

7 子查詢各位置用法

說明:where位置的子查詢是最常用的.

--1單句from位置,具體用途待研究
select * from (select 統籌支付,count(*) 次數  --門診結算金額出現頻率前20名
               from T_醫院門診結算單_西豐
               where 統籌支付>0
               group by 統籌支付
               order by 次數 desc)
where rownum<21;
    
 --2union位子 雙句子查詢,兩句結果合併
  select count(*) 
  from (select 身份證號
   		from T_醫院門診結算單_西豐
   		group by 身份證號
        having sum(統籌支付)>0
        
  union  --合併去重
      
  select 身份證號
  from T_醫院住院結算單_西豐
  group by 身份證號
  having sum(統籌支付)>0);  
  
--3 from位置 連線查詢帶子查詢
 select * from (查詢語句)  join (查詢語句)  on 條件連線
 
--4 select位置的子查詢
select *,(select 想要在父表顯示的列名1 
          from 子表1 
          where 父表.相同列 = 子表1.相同列  ) as 表1 ,
          
         (select 想要在父表顯示的列名2 
          from 子表2 
          where 父表.相同列 = 子表2.相同列  ) as 表2
from  父表 
--格式說明:新增列子查詢中:select 只能顯示一列資訊,多了報錯,如果想顯示多列可以再寫一個,where 中設定的條件就是兩個表連線的內容
--重點說明:如果是新增的列參與運算,不能用as後的名字,需要用新增的運算格式

(本章完)

此資源有PDF目錄版,如想獲得請掃碼關注右側公眾號自動獲取