해당 컬럼에서 하루 전날 데이터만 가져오기

부이로그·2023년 7월 27일
  • 해당 컬럼에서 하루 전날 데이터만 가져오기
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;
profile
고귀하면서 밝은!

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기