那些年我写过的最长sql语句

前言

   那些年我写过的最长sql语句,在此写成博客,以此备份,便于后续工作参考

目录

      1.开通用户数

      2.开通用户数明细

      3.注册用户数

      4.注册用户数明细

      5.相似博客推荐

   1.开通用户数

SELECT W.REGION_NAME AREANAME,
       A.PROVINCE_NO areaNo,
       SUBSTR(A.PROVINCE_NO,0,2) cityNO,
       NVL(A.COUNT, 0) BUSI_HISSUM,
       NVL(B.COUNT, 0) BUSI_TOD,
       NVL(C.COUNT, 0) BUSI_YES,
       D.HISMAX BUSI_HISMAX,
       E.HISAVG BUSI_HISAVG
  FROM (SELECT T.PROVINCE_NO, COUNT(T.PROVINCE_NO) COUNT
          FROM W_BUSI_USER_BIND T
         WHERE T.SERVICE_TYPE = '01'
           AND T.ORGAN_CODE IS NOT NULL
           AND T.PROVINCE_NO IS NOT NULL
           AND T.BIND_TIME IS NOT NULL
         GROUP BY T.PROVINCE_NO) A,
       
       (SELECT T.PROVINCE_NO, COUNT(T.USER_NO) COUNT
          FROM W_BUSI_USER_BIND T
         WHERE T.SERVICE_TYPE = '01'
           AND T.ORGAN_CODE IS NOT NULL
           AND T.BIND_TIME IS NOT NULL
           AND T.PROVINCE_NO IS NOT NULL
           AND TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD') =
               TO_CHAR(SYSDATE, 'YYYY-MM-DD')
         GROUP BY T.PROVINCE_NO) B,
       
       (SELECT T.PROVINCE_NO, COUNT(T.USER_NO) COUNT
          FROM W_BUSI_USER_BIND T
         WHERE T.SERVICE_TYPE = '01'
           AND T.ORGAN_CODE IS NOT NULL
           AND T.BIND_TIME IS NOT NULL
           AND T.PROVINCE_NO IS NOT NULL
           AND TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD') =
               TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD')
         GROUP BY T.PROVINCE_NO) C, 
       
       (SELECT A.PROVINCE_NO, MAX(A.USER_NO) HISMAX
          FROM (SELECT T.PROVINCE_NO,
                       COUNT(T.USER_NO) USER_NO,
                       TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD')
                  FROM W_BUSI_USER_BIND T
                 WHERE T.SERVICE_TYPE = '01'
                   AND T.ORGAN_CODE IS NOT NULL
                   AND T.BIND_TIME IS NOT NULL
                   AND T.PROVINCE_NO IS NOT NULL
                 GROUP BY T.PROVINCE_NO, TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD')) A
         GROUP BY A.PROVINCE_NO) D, 
       
       (SELECT A.PROVINCE_NO, FLOOR(AVG(A.USER_NO)) HISAVG
          FROM (SELECT T.PROVINCE_NO,
                       COUNT(T.USER_NO) USER_NO,
                       TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD')
                  FROM W_BUSI_USER_BIND T
                 WHERE T.SERVICE_TYPE = '01'
                   AND T.ORGAN_CODE IS NOT NULL
                   AND T.BIND_TIME IS NOT NULL
                   AND T.PROVINCE_NO IS NOT NULL
                 GROUP BY T.PROVINCE_NO, TO_CHAR(T.BIND_TIME, 'YYYY-MM-DD')) A
         GROUP BY A.PROVINCE_NO) E, 
       W_SYS_REGION W
 WHERE W.REGION_TYPE = '02'
   AND W.ISACTIVE = '1'
   AND A.PROVINCE_NO = W.REGION_CODE(+)
   AND A.PROVINCE_NO = B.PROVINCE_NO(+)
   AND A.PROVINCE_NO = C.PROVINCE_NO(+)
   AND A.PROVINCE_NO = D.PROVINCE_NO(+)
   AND A.PROVINCE_NO = E.PROVINCE_NO(+)
 ORDER BY W.REGION_CODE
 

   2.开通用户数明细查询

    

	SELECT 
	   a.area_no areaNo,
       a.count busi_hisSum,
       NVL(b.count, 0) busi_tod,
       NVL(c.count, 0) busi_yes,
       d.count busi_hisMax,
       e.count busi_hisAvg
  from (select area_no, count(*) count
          from w_sync_organ_areas a, w_busi_user_bind b
         where a.org_no = b.organ_code
           and exists (select 1
                  from p_code p
                 where code_type = '60004200'
                   and valid_flag = '1'
                   and a.area_no = p.value)
         group by area_no) A,
       
       (select area_no, count(0) count
          from w_sync_organ_areas a, w_busi_user_bind b
         where a.org_no = b.organ_code
              
           and to_char(b.bind_time, 'YYYY-MM-DD') =
               to_char(SYSDATE, 'YYYY-MM-DD')
           and exists (select 1
                  from p_code p
                 where code_type = '60004200'
                   and valid_flag = '1'
                   and a.area_no = p.value)
         group by area_no) B,
       
       (select area_no area_no, count(*) count
          from w_sync_organ_areas a, w_busi_user_bind b
         where a.org_no = b.organ_code
              
           and to_char(b.bind_time, 'YYYY-MM-DD') =
               to_char(SYSDATE - 1, 'YYYY-MM-DD')
           and exists (select 1
                  from p_code p
                 where code_type = '60004200'
                   and valid_flag = '1'
                   and a.area_no = p.value)
         group by area_no) C,
       
       (select s.area_no, Max(s.count) count
          from (select area_no area_no,
                       TO_CHAR(b.bind_time, 'YYYY-MM-DD'),
                       count(*) count
                  from w_sync_organ_areas a, w_busi_user_bind b
                 where a.org_no = b.organ_code
                   and exists (select 1
                          from p_code p
                         where code_type = '60004200'
                           and valid_flag = '1'
                           and a.area_no = p.value)
                 group by area_no, to_char(b.bind_time, 'YYYY-MM-DD')) s
         group by s.area_no) D,
       
       (select s.areaNo area_no, floor(AVG(s.count)) count
          from (select area_no areaNo,
                       to_char(b.bind_time, 'YYYY-MM-DD'),
                       count(*) count
                  from w_sync_organ_areas a, w_busi_user_bind b
                 where a.org_no = b.organ_code
                   and exists (select 1
                          from p_code p
                         where code_type = '60004200'
                           and valid_flag = '1'
                           and a.area_no = p.value)
                 group by area_no, to_char(b.bind_time, 'YYYY-MM-DD')) s
         group by s.areaNo) e
 where 
 		a.area_no = b.area_no(+)
   and 
   		a.area_no = c.area_no(+)
   and 
   		a.area_no = d.area_no(+)
   and 
   		a.area_no = e.area_no(+)
  and 
  		a.cityNo is not null
 order by busi_hisSum DESC

 

 

    3.注册用户数

   SELECT A.AREA_NO,
   	 	SUBSTR(a.area_no,0,2) cityNo,
       A.NAME AREANAME,
       NVL(A.CT, 0) HISSUM,
       NVL(B.CT, 0) TOD,
       NVL(C.CT, 0) YES,
       NVL(D.CT, 0) HISAVG,
       NVL(E.CT, 0) HISMAX
  FROM (SELECT TMP.NAME, A.AREA_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.AREA_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.CITY_NO IS NOT NULL
                 GROUP BY WU.AREA_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.AREA_NO) A,
       (SELECT TMP.NAME, A.AREA_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.AREA_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.CITY_NO IS NOT NULL
                   AND TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') =
                       TO_CHAR(SYSDATE, 'YYYY-MM-DD')
                 GROUP BY WU.AREA_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.AREA_NO) B, 
       (SELECT TMP.NAME, A.AREA_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.AREA_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.CITY_NO IS NOT NULL
                   AND TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') =
                       TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD')
                 GROUP BY WU.AREA_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.AREA_NO) C, 
       (SELECT TMP.NAME, A.AREA_NO, MAX(A.CT) CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.AREA_NO,
                       TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') REG_DATE,
                       COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.CITY_NO IS NOT NULL
                 GROUP BY WU.AREA_NO, TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD')) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.AREA_NO
         GROUP BY TMP.NAME, A.AREA_NO) D,
       (SELECT TMP.NAME, A.AREA_NO, FLOOR(AVG(A.CT)) CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.AREA_NO,
                       TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') REG_DATE,
                       COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.CITY_NO IS NOT NULL
                 GROUP BY WU.AREA_NO, TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD')) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.AREA_NO
         GROUP BY TMP.NAME, A.AREA_NO) E 
 WHERE A.AREA_NO = B.AREA_NO(+)
   AND A.AREA_NO = C.AREA_NO(+)
   AND A.AREA_NO = D.AREA_NO(+)
   AND A.AREA_NO = E.AREA_NO(+)
 ORDER BY A.AREA_NO

   4.注册用户数明细

SELECT A.CITY_NO area_no,
       A.NAME AREANAME,
       SUBSTR(a.city_no,0,2) cityNo,
       NVL(A.CT, 0) HISSUM,
       NVL(B.CT, 0) TOD,
       NVL(C.CT, 0) YES,
       NVL(D.CT, 0) HISAVG,
       NVL(E.CT, 0) HISMAX
  FROM (SELECT TMP.NAME, A.CITY_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.CITY_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.AREA_NO = #areaNo#
                   AND WU.CITY_NO IS NOT NULL
                 GROUP BY WU.CITY_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.CITY_NO) A,
       (SELECT TMP.NAME, A.CITY_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.CITY_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.AREA_NO = #areaNo#
                   AND WU.CITY_NO IS NOT NULL
                   AND TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') =
                       TO_CHAR(SYSDATE, 'YYYY-MM-DD')
                 GROUP BY WU.CITY_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.CITY_NO) B,
       (SELECT TMP.NAME, A.CITY_NO, A.CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.CITY_NO, COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.AREA_NO = #areaNo#
                   AND WU.CITY_NO IS NOT NULL
                   AND TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD') =
                       TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD')
                 GROUP BY WU.CITY_NO) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.CITY_NO) C, 
       
       (SELECT TMP.NAME, A.CITY_NO, MAX(A.CT) CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.CITY_NO,
                       TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD'),
                       COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.AREA_NO = #areaNo#
                   AND WU.CITY_NO IS NOT NULL
                 GROUP BY WU.CITY_NO, TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD')) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.CITY_NO
         GROUP BY TMP.NAME, A.CITY_NO) D,
       
       (SELECT TMP.NAME, A.CITY_NO, FLOOR(AVG(A.CT)) CT
          FROM CSWEB_GLOBAL.P_CODE TMP,
               (SELECT WU.CITY_NO,
                       TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD'),
                       COUNT(WU.LOGIN_NAME) CT
                  FROM W_USERS WU
                 WHERE WU.AREA_NO = #areaNo#
                   AND WU.CITY_NO IS NOT NULL
                 GROUP BY WU.CITY_NO, TO_CHAR(WU.REG_DATE, 'YYYY-MM-DD')) A
         WHERE TMP.CODE_TYPE = '60004200'
           AND TMP.VALUE = A.CITY_NO
         GROUP BY TMP.NAME, A.CITY_NO) E
 WHERE A.CITY_NO = B.CITY_NO(+)
   AND A.CITY_NO = C.CITY_NO(+)
   AND A.CITY_NO = D.CITY_NO(+)
   AND A.CITY_NO = E.CITY_NO(+)
 ORDER BY A.CITY_NO
   

   5.相似博客推荐

        1:那些年我写过的存储过程与计划任务

### 回答1: ANSWER: 下面是创建表的标准SQL语句: CREATE TABLE table_name (column_1 datatype, column_2 datatype, column_3 datatype, ...); ### 回答2: 创建表是数据库操作中的一项重要任务,可以通过标准的SQL语句来实现。以下是一个示例的标准SQL语句来创建一个表: ``` CREATE TABLE 表名 ( 列名1 数据类型, 列名2 数据类型, 列名3 数据类型, … ); ``` 在上面的语句中,你需要将"表名"替换为你想要创建的表的名称。然后,在括号内指定每列的名称和数据类型。你可以根据需要添加更多的列,并为每个列指定其相应的数据类型。 例如,如果你想要创建一个名为"学生"的表,包含"学生编号"、"姓名"和"龄"这三个列,你可以使用以下SQL语句: ``` CREATE TABLE 学生 ( 学生编号 INT, 姓名 VARCHAR(50), 龄 INT ); ``` 在上述示例中,"学生编号"和"龄"列的数据类型被设置为INT(整数),"姓名"列的数据类型被设置为VARCHAR(50)(最长50个字符的字符串)。 通过使用标准的SQL语句来创建表,你可以根据自己的需求定义表的结构和列的特性,为你的数据库应用程序提供一个结构良好的数据存储方案。 ### 回答3: 建表的标准SQL语句如下: CREATE TABLE 表名 ( 列名1 数据类型1, 列名2 数据类型2, 列名3 数据类型3, ... ); 在这个语句中,你需要替换表名、列名和数据类型。 例如,如果你要创建一个名为"学生"的表,包含学号、姓名和龄三列,可以使用以下SQL语句: CREATE TABLE 学生 ( 学号 INT, 姓名 VARCHAR(50), 龄 INT ); 在这个例子中,"学号"列使用了整数数据类型(INT),"姓名"列使用了可变长度字符串数据类型(VARCHAR),并且指定了最大长度为50,"龄"列仍然使用整数数据类型(INT)。这个SQL语句将创建一个名为"学生"的表,它具有这三列和相应的数据类型。 需要注意的是,根据不同数据库管理系统(如MySQL、Oracle、SQL Server等),数据类型的法可能略有不同,请根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值