내일배움캠프/SQL 25

[PostgreSQL] ::, CASE_ type 변환

기본 구조CASE (SQL 표준)# 예시 1: 정수를 텍스트로 변환SELECT CAST(1234 AS TEXT) AS converted_value;# 예시 2: 소수를 정수로 변환SELECT CAST(12.34 AS INTEGER) AS converted_value;# 예시 3: 텍스트를 날짜로 변환SELECT CAST('2025-03-12' AS DATE) AS converted_date;# 예시 4: 텍스트를 정수로 변환SELECT CAST('5678' AS INTEGER) AS converted_value;# 예시 5: JSON 문자열을 JSON 객체로 변환SELECT CAST('{"key": "value"}' AS JSON) AS json_object;# 예시 6: 숫자를 소수로 변환SELECT ..

[PostgreSQL] FILTER_SELECT문 속의 조건

FILTER 기본 구조SELECT COUNT(1) FILTER (WHERE 조건) AS alias_nameFROM 테이블명;# 지정된 조건을 만족하는 행의 수를 세어 alias_name이라는 별칭으로 결과를 반환참고 : https://www.postgresql.org/docs/current/sql-expressions.html[활용 문제] https://datalemur.com/questions/odd-even-measurements  Google Interview Question | DataLemurGoogle SQL Interview Question: Calculate the sum of odd-numbered and even-numbered measurements.datalemur.com [문제] ..

[SQL]LAG(), LEAD()함수 _현재 행의 이전 행의 값 참조하기

LAG() 함수 :  현재 행의 이전 행 값을 가져온다.LEAD() 함수 : 현재 행의 다음 행 값을 가져온다.SELECT절에서 주로 사용되며, 서브쿼리나 CTE(Common Table Expression) 내에서 사용할 수 있다.🔺WHERE 절이나 ORDER BY 절에서 사용할 수는 없음!LAG() 함수기본 구문LAG(column_name, offset, default_value) OVER (PARTITION BY ... ORDER BY ...) column_name: 참조할 열.offset: 이전 행의 수 (기본값은 1).default_value: 이전 행이 없을 때 반환할 기본값 (기본값은 NULL).예시SELECT id, temperature, LAG(temperature)..

[SQL]SQL반복문_재귀적 CTE(WITH RECURSIVE)

WITH CTE(Common Table Ezpression) : 재귀 쿼리, 계층 구조 쿼리, 크리 구조 쿼리재귀 CTE쿼리란 : 자체 이름을 참조하는 하위 쿼리가 있는 CTE이다. 특히 시리즈 생성이나 계층적 구조의 데이터를 순회할 때 사용된다.MySQL :: MySQL 8.4 Reference Manual :: 15.2.20 WITH (Common Table Expressions)시리즈 생성예시) 1~10까지의 정수 시리즈WITH RECURSIVE natural_sequence AS ( -- 재귀적 공통 테이블을 natural_sequence에 저장 SELECT 1 AS n -- 1을 선택하여 n이라고 정의 UNION ALL -- 두 개의 select 쿼리 결과를 합친다. all은 중복된 값을..

[SQL] null값 대체하기_COALESCE, IFNULL

COALESCE() vs. IFNULL()실무에서는 특정 컬럼이 NULL을 가지면 NULL이 아닌 값으로 대체하기 위해 활용된다.공통점두 함수는 모두 NULL 값을 대체하는 데 사용된다.모두 인자 중에서 처음으로 NULL이 아닌 값을 반환한다.차이점COALESCE여러 인수 처리 → N개다양한 DBMS에서 지원IFNULL단 두개의 인수만 처리 → 2개MySQL 전용함수SELECT COALESCE(NULL, NULL, 5, 10); -- 결과: 5SELECT COALESCE(NULL, 'Fallback', NULL, 'Last Option'); -- 결과: 'Fallback'SELECT IFNULL(NULL, 5); -- 결과: 5SELECT IFNULL('Value', 10); -- 결과: 'Value'