01-用一条sql统计同一张表中满足不同条件的个数

  1. SELECT
  2. t."TradeTime",
  3. t."shiftDate",
  4. ( to_char( t."TradeTime", 'hh24' ) + 1 ) AS "hour",
  5. SUM( CASE WHEN t."tradeResult" = '1' THEN 1 ELSE 0 END ) AS "tradeSuccessfully",
  6. sum( CASE WHEN t."tradeResult" IN ( '1', '2', '3', '4' ) THEN 1 ELSE 0 END ) AS "tradeall",
  7. sum( CASE WHEN t."logicalFailCause" IN ( '1005', '1007', '1021', '1012' ) THEN 1 ELSE 0 END ) AS "position"
  8. FROM
  9. "TB_DS_TRADEINFO" t
  10. WHERE
  11. to_char( t."TradeTime", 'yyyy-mm-dd' ) = ( to_char( SYSDATE - 1, 'yyyy-mm-dd' ) )
  12. GROUP BY
  13. t."TradeTime",
  14. t."shiftDate"

02-oracle经典sql

  1. -----年度和季度sql---------------
  2. --获取当前时间季度
  3. select to_char( SYSDATE, 'q' ) from dual ;
  4. --获取当前时间年份
  5. select to_char( SYSDATE, 'yyyy' ) FROM dual;
  6. --获取当前时间年度和当前季度
  7. SELECT
  8. to_char( SYSDATE, 'yyyy' ),
  9. to_char( SYSDATE - interval '12' month, 'q' )
  10. FROM
  11. dual;
  12. --获取上个季度是哪个季度
  13. select to_char( SYSDATE - interval '3' month, 'q' ) from dual;
  14. --获取当前时间上一年的同季度
  15. select to_char( SYSDATE - interval '12' month, 'q' ) from dual;
  16. --获取当前时间上一年度年份
  17. select to_char( SYSDATE - interval '12' month, 'yyyy' ) from dual;
  18. --获取当前时间上年度的年份和季度
  19. SELECT
  20. to_char( SYSDATE - interval '12' month, 'yyyy' ),
  21. to_char( SYSDATE - interval '12' month, 'q' )
  22. FROM
  23. dual;
  24. --上个季度的年份
  25. select TO_CHAR( SYSDATE - interval '3' month, 'yyyy' ) from dual;
  26. --获取当前年度当前季度的数据,date为表中的字段,类型为date类型
  27. select * from dual where
  28. to_char(date, 'yyyy' ) = TO_CHAR( SYSDATE, 'yyyy' )
  29. AND to_char(date, 'q' ) = to_char( SYSDATE, 'q' )
  30. --获取本年度的数据,date为表中的字段,类型为date类型
  31. select * from dual where to_char(date, 'yyyy' ) = TO_CHAR( SYSDATE, 'yyyy' )
  32. --获取上一年度的数据,date为表中的字段,类型为date类型
  33. select * from dual where to_char(date, 'yyyy' )=TO_CHAR(ADD_MONTHS(SYSDATE,- 12 ),'yyyy' )
  34. ---------------------月份和日期sql-------------------------------------
  35. --获取当前时间日期(几号)
  36. select to_char( SYSDATE, 'dd' ) FROM dual;
  37. --获取当前时间月份
  38. select to_char( SYSDATE, 'mm' ) FROM dual;
  39. --获取当前时间日期(年月日)
  40. select to_char( SYSDATE, 'yyyy-mm-dd' ) FROM dual;
  41. --获取前一天的日期(年月日)
  42. select to_char( SYSDATE - 1, 'yyyy-mm-dd' ) from dual;
  43. --获取后一天的日期(年月日)
  44. select to_char( SYSDATE +1, 'yyyy-mm-dd' ) from dual;
  45. --获取上一个月的日期
  46. select to_char(add_months(trunc(sysdate),-1),'yyyy-mm-dd') from dual;
  47. --获取下个月的日期
  48. select to_char(add_months(trunc(sysdate),1),'yyyy-mm-dd') from dual;
  49. --获取当前时间的上一年的日期
  50. select TO_CHAR(add_months( trunc( SYSDATE ),- 12 ), 'yyyy-mm-dd' ) FROM dual;
  51. --获取当前时间的下一年的日期
  52. select TO_CHAR(add_months( trunc( SYSDATE ),+ 12 ), 'yyyy-mm-dd' ) FROM dual;

03-oracle给查询结果一个虚拟自增的列

  1. -- t."shiftDate" order by 后面的排序字段
  2. SELECT
  3. row_number ( ) over ( ORDER BY to_char( t."shiftDate", 'mm' ) ) 月数,
  4. t."stationId",
  5. to_char( t."shiftDate", 'yyyy-mm-dd' )
  6. FROM
  7. "TB_DS_TRADEINFO" t
  8. ORDER BY
  9. to_char( t."shiftDate", 'mm' )