SELECT log_dd
FROM table_log
WHERE to_timestamp(log_dd, 'YYYYMMDD') >= current_date - interval '1 day'
AND to_timestamp(log_dd, 'YYYYMMDD') < current_date;
interval 타입은 연/월/일 등의 단위와 결합하여 날짜와 시간 연산이 가능한 타입이다.
2023-05-03이 당일이면 current_date - interval '1 day' 을 하면 ex) 2023-05-02 00:00:00.000
보다 크거나 같으면서 current_date 현재시간 보다 작은 날짜들을 뽑는다.
표준 편차란, 평균(mean)에 대한 오차이다.
즉, 실제 데이터 값이 평균을 기준으로 할때 얼마나 기복이 있는지를 나타내는 것이다.
평균이 m이고 표준편차가 3이라고 할때, 실제 값은 m +-3 값이라는 것이다.
편차는 원래의 값에서 평균을 뺀 값인데, 플러스도 될 수 있고,마이너스도 될 수 있다.
각각의 값들의 기복? 편차 라고 생각하면 될듯
8,8,8,8 이면 편차가 0이다.
SELECT log_dd, id, COUNT(*), MAX(exec_time), MIN(exec_time), AVG(exec_time), STDDEV(exec_time)
FROM table_log
WHERE to_timestamp(log_dd, 'YYYYMMDD') >= current_date - interval '1 day'
AND to_timestamp(log_dd, 'YYYYMMDD') < current_date
GROUP BY id, log_dd;
COUNT FILTER를 사용하면 SELECT 에서 여러 COUNT 사용이 가능하다.
-- 현재 시간에서 하루 전을 구한다.
SELECT current_date - interval '1 DAY';
-- 하루전 날의 값의 ROW 갯수 확인
select id, log_dd
from table_log
where to_timestamp(log_dd, 'YYYYMMDD') = '20230503';
--함수를 사용해서 특정 날짜입력값과 ROW가 같은걸 확인
select id, log_dd
from table_log
where to_timestamp(log_dd, 'YYYYMMDD') = current_date - interval '1 DAY';
--특정 날짜의 하루전
select id, log_dd
from table_log
where to_timestamp(log_dd, 'YYYYMMDD') = to_timestamp('20230504', 'YYYYMMDD') - interval '1 day';
-- 하루 전 값을 이용해서 범위를 구한다.
select id, log_dd
from table_log
WHERE to_timestamp(log_dd, 'YYYYMMDD') >= current_date - interval '1 day' --하루 전날 날짜포함해서 더 큰 날짜
AND to_timestamp(log_dd, 'YYYYMMDD') < current_date; -- 오늘날짜는 포함하지 않고 작은 날짜
-- 인터페이스 아이디로 그룹함수를 설정해준다.
SELECT id, MAX(exec_time)
FROM table_log
GROUP BY id;
-- 그룹함수를 설정해준다. groupBy에 log_dd값도 넣어준다.
SELECT log_dd
, id
, COUNT(*) as execution_Count -- 조회한 값의 갯수
, MAX(exec_time) as maxExecution_Time -- 가장 긴 실행시간
, MIN(exec_time) as minExecution_Time -- 가장 작은 실행실간
, AVG(exec_time) as average_ExecutionTime -- 평균 실행시간
, STDDEV(exec_time) as standard_Deviation -- 표준편차
FROM table_log
WHERE to_timestamp(log_dd, 'YYYYMMDD') >= current_date - interval '1 day'
AND to_timestamp(log_dd, 'YYYYMMDD') < current_date
GROUP BY id, log_dd;
-- scs_yn 조건에 따른 성공 갯수와 실패 갯수도 카운트로 조회
SELECT log_dd
, id
, COUNT(*) as execution_Count -- 조회한 값의 갯수
, COUNT(scs_yn) FILTER (WHERE scs_yn = 'Y') as success_Count -- 로그 성공 갯수
, COUNT(scs_yn) FILTER (WHERE scs_yn = 'N') as failure_Count -- 로그 실패 갯수
, MAX(exec_time) as maxExecution_Time -- 가장 긴 실행시간
, MIN(exec_time) as minExecution_Time -- 가장 작은 실행실간
, AVG(exec_time) as average_ExecutionTime -- 평균 실행시간
, STDDEV(exec_time) as standard_Deviation -- 표준편차
FROM table_log
WHERE to_timestamp(log_dd, 'YYYYMMDD') >= current_date - interval '1 day' -- 범위
AND to_timestamp(log_dd, 'YYYYMMDD') < current_date
GROUP BY id, log_dd;
이런 유용한 정보를 나눠주셔서 감사합니다.