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 进入正则化替换。

相关文章
相关标签/搜索