본문 바로가기

SQL71

[SQL] date_trunc() 1. date_trunc는 인자로 들어온 값까지 주어진 날짜를 절삭 select date_trunc('day', '2022-03-03 14:05:32'::timestamp) => 결과 : 2022-03-03 00:00:00 2. date타입을 date_trunc해도 반환값은 timestamp타입 select date_trunc('day', to_date('2022-03-03', 'yyyy-mm-dd')) => 결과 : 2022-03-03 00:00:00 👉 만약 date 타입을 그대로 유지하려면? ::date 로 형변환 해주기! => select date_trunc('day', '2022-03-03'::date)::date 3. Week의 시작 날짜 구하기 : 월요일이 기준 select date_trun.. 2023. 3. 21.
[SQL 시간 간격] justify_interval 과 age 사용 justify_interval(계산하고 싶은 기간, 예: 15000days) 한 달 30일 기준으로 기간을 계산 예 ; 41년 10월 1일 00:00:00 등 age(계산하고 싶은 기간, 또는 컬럼) 한 달 31일 기준으로 현재까지의 소요 시간 계산 예 ; 41년 10월 1일 00:00:00 등 2023. 3. 21.
[SQL 현재 시간 표시] now(), current_timestamp, current_date, current_time now() 지금 현재 시간(timestamp) current_timestamp 지금 현재 시간(timestamp) current_date 지금 현재 시간에서 연-월-일 날짜 정보만 current_time 지금 현재 시간에서 시간 정보만 2023. 3. 21.
[SQL] 시간 더하기, 빼기 1. Date 타입에 숫자값을 더하거나/빼면 👉 숫자값에 해당하는 일자를 더해거나/빼서 날짜가 계산됨 select to_date('2022-01-01', 'yyyy-mm-dd') + 2 as date_01; ⚡️유의 : date 타입에 + interval 사용시, 결과 값은 timestamp로 찍힘 2. Timestamp는 interval 타입을 이용하여 날짜를 더하고 뺄 수 있음 👉 + interval '7 hours 2days 30minutes' 등 (이때, Hour 뒤에 s 를 붙여 복수형으로 써도 되고, 안써도 됨!) select to_timestamp('2022-01-01 14:36:52', 'yyyy-mm-dd hh24:mi:ss') + interval '7 hour' as timestamp_.. 2023. 3. 21.
[SQL 시간 추출하기] extract와 date_part extract 사용하기 날짜 데이터에서 필요한 부분만 추출할 수 있음 extract (year from date컬럼명) as year => Extract (year/month/day from 컬럼명)의 형식으로 사용 extract 예제 문제는 프로그래머스 : 입양 시각 구하기(1) 아래와 같이 날짜와 시간이 초 단위까지 나와있는데, 여기서 '시간'만 추출해야하는 경우다. extract(hour from DATETIME) 으로 시간만 추출하는 것이 문제의 핵심 select extract(hour from DATETIME) as HOUR, count(*) as COUNT from ANIMAL_OUTS where extract(hour from DATETIME) between 9 and 19 group by .. 2023. 3. 21.
[SQL 시간 정보 타입] Date, Timestamp, interval SQL에서 시간을 나타내는 타입 Date 연, 월, 일 정보(시간 제외한 일자) YYYY-MM-DD Timestamp 시간 포함한 일자 Time 오직 시간 정보만(잘 안씀) Interval 기간(시작-종료지점 사이) 시간 정보를 표시하기 위해, 먼저 문자열을 Date, Timestamp로 변환 to_date('변환할 문자열, 예시 : 2022-01-01'), 'yyyy-mm-dd'(시간 지정 정보)) 👉 2022-01-01 (결과 시간정보) to_timestamp('변환할 문자열, 예시 : 2022-01-01'), 'yyyy-mm-dd'(시간 지정 정보)) 👉 2022-01-01 00:00:00:000 +0900 추가 예시) to_timestamp('2022-01-01 13:04:05', 'yyyy-mm.. 2023. 3. 21.
[SQL] WITH 구문 WITH 구문 정의 하위 쿼리(subquery)나 중첩 쿼리(nested query) 대신 적용할 수 있는, 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 기능 장점 복잡한 쿼리를 더욱 가독성 좋게 작성할 수 있음 공통 테이블 표현식을 재사용할 수 있으므로 코드 중복을 방지할 수 있음 예시 다음 쿼리는 "employees" 테이블에서 급여가 가장 높은 3명의 직원 정보를 출력함. WITH 구문을 사용하여 공통 테이블 표현식 "highest_salaries"를 정의하고, 이를 메인 쿼리에서 참조함 WITH highest_salaries AS ( SELECT * FROM employees ORDER BY salary DESC LIMIT 3 ) SELECT * FROM h.. 2023. 3. 18.
[Non Equi 조인] between 사용시 조인 시 연결하는 키 값을 어떻게 연결하느냐에 따라, Equi 조인 : join 시 연결하는 키 값이 서로 같은 경우( =로 연결) Non Equi 조인 : 키 값으로 연결할 때, =가 아닌 다른 연산자를 사용 (between, >, >=, 고수의 영역 ▶︎ 예시 쿼리: with temp_01 as ( select 1 as rnum union all select 2 as rnum ) select * from dept a cross join temp_01 b; temp_01 이라는 임시 테이블을 생성 : rnum이라는 컬럼에 1, 2를 차례로 생성함. 실제 쿼리 작성시 temp_01을 dept 테이블과 cross join 하면, dept 테이블의 모든 키 값이 두 배가 되어 나타남. 2023. 3. 18.
[coalesce() 함수] 결측치 처리하기 NULL 값 또는 빈 값을 필터링하고, 유효한 값이 없을 경우 지정된 기본값을 반환 예를 들어, "customers" 테이블에서 "email" 필드가 NULL일 경우 "alternate_email" 필드 값을 사용하고, 둘 다 NULL일 경우 "N/A"를 반환하는 쿼리는 다음과 같다. SELECT COALESCE(email, alternate_email, 'N/A') as contact_email FROM customers; 이 쿼리는 "email" 필드를 먼저 검색 -> 값이 NULL이면 "alternate_email" 필드를 검색 ->> 그리고 둘 다 NULL이면 "N/A"를 반환 또 다른 예시 : order_id 가 null 이면 0으로 처리하라 SELECT coalesce(order_id, 0) .. 2023. 3. 18.
728x90