UNION函數的使用以及SQL文的高效編輯方法

查找SELECT 相同列的狀況下,例如選擇一個月每一天的某幾項數據,至關於查詢一個月三十行數據,爲了在一個表中顯示就要使用union函數。編輯器

eg:ide

SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-01%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-02%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-03%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-04%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-05%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-06%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-07%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-08%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-09%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-10%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-11%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-12%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-13%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-14%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-15%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-16%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-17%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-18%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-19%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-20%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-21%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-22%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-23%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-24%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-25%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-26%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-27%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-28%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-29%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-30%' AND act = '1005001001' UNION ALL
SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-31%' AND act = '1005001001'
View Code

1. UNION 表示去重的結果;函數

2. UNION ALL 表示不進行去重的結果;ui

 UNION函數就是用來拼表的,條件是每一個選擇語句的列相同,這個列的內容可能相同或者不一樣,不一樣的時候以第一個選擇語句爲準。spa

需求在哪?好比要使用拼接以後的表格,就頗有用了,場景:一個月30天,求每一天去重的日活量,而後求和再作平均,這就須要將去重的日活拼接成一張30行的表,而後再作SUM而後再求平均。excel

根據實際須要使用UNION函數,使用SQL最重要的技能就是理解表格之間的關係,先後層次,你須要什麼表格就使用鏈接JOIN、UNION等方法人爲實現什麼表格。code

在重複查詢的時候,通常都是修改一段SQL文的小部分語句,好比日期的天的數字,這種狀況就須要掌握高級編輯方法來提升編輯效率,使用excel和高級文本編輯器(editplus等)以及正則化手段blog

方法總結:字符串

1. 寫好第一句SQL文;it

2. 使用excel拼接SQL文,即複製重複部分,利用excel自動生成不重複部分(好比日期自動+1);

3. 使用文本編輯器的正則化功能實現SQL文的修飾。

注意:使用Ctrl + D 來複制(向下填充)Ctrl + R 向右填充;修改excel單元格格式;excel的CONCATENATE()函數能夠拼接多個字符串;

      學會使用excel的單元格引用,$B3中的$符號表示絕對引用B列,非絕對引用3行,行數能夠拖動自動改變,用來引用單元格的內容,這在須要使用單元格內容的SQL文中很重要。

   editplus 使用 Ctrl + H 進入正則化替換。

相關文章
相關標籤/搜索