zoukankan      html  css  js  c++  java
  • sql 随记

    1. 排序ORDER BY

     ORDER BY字句位置是SELECT语句中最后一个字句

              降序:DESC      升序:ASC(默认)

    1. WHERE 语句

    操作符:=  <>  !=   <   <=  !<   >  >=   !>    BETWEEN (在指定两个值之间)   

    ISS NULL (为NULL值)

    2.1         AND操作符

    2.2         OR操作符(AND操作符优先级大于OR)

    1. IN操作符
    2. NOT操作符
    3. LIKE操作符

    5.1         百分号(%)通配字符

    表示任意字符出现任意次数

    5.2         下划线(_)通配符

    与%一样,但_只匹配单个字节

    1. 方括号([])通配符

         用来指定一个字符集,他必须匹配指定位置(通配符位置)的一个字符,可以用前缀

    1. 字段

    RTRIM() 函数去掉右边所有空格,LTRIM()函数去掉串左边空格,TRIM()函数去掉串左右两边空格。

    拼接字段:用 “+”或“||” MYSQL用CONCAT(  , )   lg: name+’(’+sex+’)’ 或name||’(’||sex||’)’

    获取当前时间:Access使用NOW() ;DB2和PostgreSQL使用CURRENT_DATE;MySQL使用CURDATE();Oracle使用SYSDATE;SQL使用GETDATE()。

    提取串组成部分:Access使用MID();Oracle和PostgreSQL使用SUBSTR();MySQL、SQL Server和Sybase使用SUBSTRING()

    数据类型转化:Access和Oracles使用多个函数,每种类型的转化有一个函数;DB2和PostgreSQL使用CAST();MySQL和SQL  Server、Sybase使用CONVERT()

    1. 常用文本处理函数

           LEFT()                      返回串左边字符

    LENGTH()(DATELENG()、LEN())  返回串长度

    LOWER()(Access使用LCASE() )         将串转为小写

    SOUNDEX()            返回串的SOUNDEX值

    UPPER()(Access()使用UCASE())          将串转化为大写

    1. 聚集函数

    AVG()          返回某列的平均值

    COUNT() 返回某列的行数

    MAX()          返回某列的最大值

    MIN()          返回某列的最小值

    SUM()          返回某列值之和

    10. 分组 GROUP BY

    HAVING过滤分组(GROUP BY后面)

    11. 取别名:Oralcel没有AS关键字

     12.环比时间:

    环比时间(单位:天)可以把天转化为       秒,分,时,周,月,年 来计算

    TO_NUMBER(TO_CHAR(TO_DATE(TIME_ID,'YYYYMMDDHH24MI')-1,'YYYYMMDD')||'0000') HTIME,

    Lg:

    WITH T_TABLE AS (

              SELECT T.TIME_ID,

              TO_CHAR(TO_DATE(T.TIME_ID, 'YYYYMMDDHH24MI') - 1, 'YYYYMMDDHH24MI') HTIME,

              NULLIF(TO_NUMBER(T1), 0) VAL

              FROM IPMSODM.O_VOBB_D T

              WHERE T.TIME_ID <= '201712130000'

              and t.ip='10.238.177.34'

              and t.SYSTEM_NAME='KLISBC4'     

         )

              SELECT TO_CHAR(TO_DATE(C.TIME_ID,'YYYYMMDDHH24MI'),'YYYY-MM-DD'), C.VAL, ROUND(100*(C.VAL-H.VAL)/NULLIF(H.VAL,0),2) HB

              FROM T_TABLE C LEFT JOIN T_TABLE H

            ON C.HTIME= H.TIME_ID

           WHERE rownum <=15

            ORDER BY C.TIME_ID

    附着失败次数(用户原因):sum(case when procedure_type=1  and procedure_status in (2,3) and  fail_cause_code in (3,5,6,7,8,15,19)    then 1 else 0 end) 

    13 .平滑查询

    SELECT TO_CHAR(TO_DATE(REPLACE(TIME_ID, SUBSTR(TIME_ID, 1, 8), 20171126),'YYYYMMDDHH24MI'),'YYYY-MM-DD HH24:MI'),

           AREA_NAME,

           IMEI_TAC,

           TERMINAL_BRAND,

           TERMINAL_MODEL,

           HTTP_SUC_RATE,

           HTTP_DELAY,

           HTTP_DLRATE_AVG,

           HTTP_DLRATE

      FROM DM_OWNAPP_TERMINAL A

      WHERE

      A.TIME_ID = '201707030000'

      AND A.AREA_NAME =?

       AND (HTTP_SUC_RATE < 70 OR HTTP_DELAY > 500 OR HTTP_DLRATE_AVG < 100 OR

           HTTP_DLRATE < 300)

       AND ROWNUM < 200

     ORDER BY DBMS_RANDOM.VALUE()

    1. 工单查询(非实时派单)

    if("jk".equals(flag)){

       tWhere= "AND T.ALARMFROM_TYPE_EN = 'alarmFromType_groupCusEte' ";

       tWhere1= "AND TYPE='type_jk_area' ";

    }

    WITH O AS

            (

              SELECT T.ORDER_CITY, T.INDEX_NAME, T.ORDER_NENAME

              FROM O_OM_TASK_EC_ORDER T

              WHERE T.ORDER_ID NOT IN

              (

                SELECT T.ORDER_ID

                FROM O_OM_TASK_EC_ORDER T

                WHERE T.ORDER_STATUS = '已归档'

              )

             --AND T.ORDER_STATUS = '运行中'

              AND T.REPLY_TIME IS NULL  

              AND T.INDEX_NAME IS NOT NULL

             AND T.ALARMFROM_TYPE_EN IN ('alarmFromType_mobileEte','alarmFromType_internetOfThings')

            UNION

              SELECT T.ORDER_CITY, T.INDEX_NAME, T.ORDER_NENAME -- //归了档但归档时间到当前时间小于2天

              FROM O_OM_TASK_EC_ORDER T

              WHERE T.ORDER_STATUS = '已归档'

              AND T.ALARMFROM_TYPE_EN IN ('alarmFromType_mobileEte','alarmFromType_internetOfThings')

                AND T.INDEX_NAME IS NOT NULL

                AND TRUNC(SYSDATE)- TRUNC(T.REPLY_TIME)<2

            ), Q AS(

              SELECT * FROM ( --//求相同派单对象最近派单过的工单号

                SELECT T.ORDER_ID, T.ORDER_CITY, T.INDEX_NAME, T.ORDER_NENAME,

                RANK() OVER(PARTITION BY T.ORDER_CITY, T.INDEX_NAME, T.ORDER_NENAME ORDER BY T.REPLY_TIME DESC) T_ROWNUM

                FROM O_OM_TASK_EC_ORDER T

                WHERE T.INDEX_NAME IS NOT NULL AND T.ORDER_STATUS = '已归档'

                AND T.ALARMFROM_TYPE_EN IN ('alarmFromType_mobileEte','alarmFromType_internetOfThings')

              ) WHERE T_ROWNUM=1

            )

            SELECT TYPE, AREA_NAME, CITY_NAME,

              C.INDEX_NAME, INDEX_UNIT, INDEX_VALUE, THRESHOLD, C_SYMBOL,

              ALARMOBJ_NAME, ALARM_TITLE, RULE, ORDER_DESC, C.DETAIL_VALUE, Q.ORDER_ID

           FROM DM_NRTM_SEND_ORDER_H C

            LEFT JOIN Q ON Q.ORDER_CITY = C.AREA_NAME

                AND Q.INDEX_NAME = C.INDEX_NAME

                AND Q.ORDER_NENAME = C.ALARMOBJ_NAME

           WHERE NOT EXISTS

              (

              SELECT * FROM O

              WHERE O.ORDER_CITY = C.AREA_NAME

                AND O.INDEX_NAME = C.INDEX_NAME

                AND O.ORDER_NENAME = C.ALARMOBJ_NAME

              )

              AND TYPE<>'type_jk_area'

          AND ORDER_TIME= '201710271200'

    1. 工单查询(非实时派单工单稽核)

    SELECT ORDER_ID, TEMP_TYPE_EN, KEY, INDEX_NAME, QUERY_TIME FROM

          (

            SELECT ORDER_ID,

              T.ORDER_CITY||','||ORDER_NENAME KEY,

              T.TEMP_TYPE_EN, T.INDEX_NAME,

              TO_CHAR(SYSDATE - 1, 'YYYYMMDD') || '0000' QUERY_TIME -- // 用回单时间的第二天的指标进行回填,此处用SYSDATE - 1而不是用T.REPLY_TIME + 1,是为了排除第一次稽核无指标就一直不能回填的情况

            FROM O_OM_TASK_EC_ORDER T

            WHERE TO_CHAR(SYSDATE, 'YYYYMMDD') > TO_CHAR(T.REPLY_TIME + 1, 'YYYYMMDD') -- //为了能取到指标。因为当天只能查前一天的数据

              AND T.AFT_INDEX_VALUE IS NULL AND T.INDEX_NAME IS NOT NULL

              AND T.INDEX_VALUE IS NOT NULL AND T.ORDER_STATUS = '已归档'

              AND T.TEMP_TYPE_EN||'-'||T.INDEX_NAME IN ('type_badUrl-HTTP访问成功率')

           UNION ALL

            SELECT ORDER_ID,

              T.ORDER_CITY||','||ORDER_NENAME KEY,

              T.TEMP_TYPE_EN, T.INDEX_NAME,

              TO_CHAR(SYSDATE - 1, 'YYYYMMDD') || '0000' QUERY_TIME  -- //因为当天只能查前一天的数据

            FROM O_OM_TASK_EC_ORDER T

            WHERE

              (

                (T.THRESHOLD_FLAG = '>' AND T.AFT_INDEX_VALUE > T.INDEX_THRESHOLD)

                OR

                (T.THRESHOLD_FLAG = '<' AND T.AFT_INDEX_VALUE < T.INDEX_THRESHOLD)

              ) AND T.INDEX_NAME IS NOT NULL AND T.INDEX_VALUE IS NOT NULL

              AND T.AFT_INDEX_VALUE IS NOT NULL AND T.ORDER_STATUS = '已归档'

              AND T.TEMP_TYPE_EN||'-'||T.INDEX_NAME IN ('type_badUrl-HTTP访问成功率')

          ) ORDER BY TEMP_TYPE_EN, QUERY_TIME

         

    对于表中两行记录完全一样的情况,可以用下面语句获取到去掉重复数据后的记录:

    select distinct * from 表名

    14.MySql查询NOT EXISTS使用栗子:解释:查询a表排除在b表中的某些条件值数据

    select *
    from tb_videotape_label a
    WHERE NOT EXISTS
    (
    select * from tb_download_record b
    where a.id = b.label_id
    and b.download_status = 1
    )
    and timestampdiff(minute,a.begintime,a.endtime)>60

  • 相关阅读:
    使用Kmeans进行聚类,用calinski_harabaz_score评价聚类效果
    使用Autoencoder进行降维
    MongoDB 之 MongoDB简介与安装 MongoDB 1
    我的淘宝客之路 起步
    Excel批量导入Orale
    CAB压缩包文件制作
    策略模式
    设计OA系统的用户角色权限分配
    java语言中的限定词
    jQuery LigerUI使用培训
  • 原文地址:https://www.cnblogs.com/baixiuhua/p/8066777.html
Copyright © 2011-2022 走看看