SQL 36

[SQL] 재귀 CTE(Recursive CTE)

재귀 CTE는 트리 구조나 계층형 데이터를 다룰 때 매우 유용한 기능이다. 특히 부모-자식 관계 데이터를 탐색할 때 많이 사용한다.CTE (Common Table Expression)WITH CTE_NAME AS ( SELECT ...)SELECT * FROM CTE_NAME;쿼리 안에서 임시로 사용하는 테이블가독성을 높이고, 서브쿼리를 반복하지 않을 수 있게 한다.📍 CTE에 대해 자세히 알아보기 재귀 CTE (Recursive Common Table Expression) 재귀 CTE는 자기 자신을 참조하는 CTE이다. 한 번 재귀 CTE를 실행하면, 내부적으로 반복(루프)을 통해 레코드를 점진적으로 확장한다.구조재귀 CTE는 두 부분으로 나누어진다:Anchor Member (기저 멤버)재귀가 시작되..

SQL 2025.04.10

[SQL] 비트 연산

1. MySQL 비트 연산자 종류연산자연산설명&AND두 숫자가 모두 1이면 1을 반환|OR두 숫자 중 하나라도 1이면 1을 반환^XOR두 숫자가 다르면 1을 반환~NOT모든 비트를 반전왼쪽 시프트비트를 왼쪽으로 이동 (2의 n제곱 곱하기)>>오른쪽 시프트비트를 오른쪽으로 이동 (2의 n제곱 나누기) 2. 예제(1) 비트 AND (&)두 값의 각 비트가 모두 1일 때만 1을 반환한다.SELECT 6 & 3; 결과: 2더보기설명6 (110₂)3 (011₂)6 & 3 = 010₂ = 2 (2) 비트 OR (|)두 값 중 하나라도 1이면 1을 반환한다.SELECT 6 | 3; 결과: 7더보기설명6 (110₂)3 (011₂)6 | 3 = 111₂ = 7 (3) 비트 XOR (^)두 값이 다를 때만 1을 반환한다...

SQL 2025.04.01

[SQL] SQL 정규 표현식 (SQL Regular Expression)

SQL 정규 표현식데이터베이스에서 패턴 매칭을 수행할 때 사용된다.주로 텍스트 데이터의 특정 패턴을 검색하거나 필터링할 때 활용된다.데이터베이스 시스템에 따라 다양한 방법으로 구현된다.기본 패턴 매칭LIKE 연산자를 사용하여 간단한 패턴 매칭을 수행할 수 있다.%: 임의의 문자 시퀀스를 매칭한다._: 임의의 한 문자를 매칭한다.예시: SELECT * FROM users WHERE name LIKE 'A%' (이름이 'A'로 시작하는 데이터를 검색한다)정규 표현식 사용MySQL, PostgreSQL, Oracle 등 일부 데이터베이스는 정규 표현식 기반의 고급 패턴 매칭을 지원한다.정규 표현식은 텍스트를 패턴으로 설명하며, 예를 들어 '^[A-Za-z]+$'는 알파벳 문자열을 의미한다.데이터베이스별 정규 ..

SQL 2025.01.12

[SQL] 가독성 높이기

# 예약어는 대문자로 작성하기SELECT, FROM, GROUP BY, HAVING, AS, AND와 같은 SQL 예약어들은 대문자로 작성한다. # 자주 행갈이 하기한 라인에 코드를 쭉 작성하지 않고, 자주 행갈이를 한다.SELECT, FROM, GROUP BY와 같이 다른 절을 한 라인에 작성하지 않는다. # 행갈이를 더 자주 하기라인을 주석처리 하여 특정 컬럼을 로직에서 제외할 수 있도록 컬럼별로 행갈이를 한다.WHERE 절에서도 AND, OR이 붙을 때바다 행갈이를 한다. # 주석 사용하기코드를 읽었을 때 이해할 수 있도록 각 코드 단락이 어떤 의도로 작성되었는지 디테일을 적는다.서브쿼리 단위나, CASE, IF 조건문 또는 WHERE절 필터링 조건을 쓸 때 주석을 적는다.다음과 같은 내용을 적는다..

SQL 2025.01.08

[SQL] solvesql Advent of SQL 2024 25일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com25일차 - 메리 크리스마스 2024: https://solvesql.com/problems/merry-christmas-2024/ https://solvesql.com/problems/merry-christmas-2024/ solvesql.com  # 풀이SELECT 'Merry Christmas!'SELECT 'Merry Christmas!': 'Merry Christmas!' 문자열을 반환한다.

[SQL] solvesql Advent of SQL 2024 24일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com24일차 - 세 명이 서로 친구인 관계 찾기:https://solvesql.com/problems/friend-group-of-3/ https://solvesql.com/problems/friend-group-of-3/ solvesql.com  # 풀이SELECT DISTINCT e1.user_a_id AS user_a_id, e1.user_b_id AS user_b_id, e2.user_b_id AS user_c_idFROM ed..

[SQL] solvesql Advent of SQL 2024 23일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com23일차 - 유량(Flow)와 저량(Stock):https://solvesql.com/problems/flow-and-stock/ https://solvesql.com/problems/flow-and-stock/ solvesql.com  # 풀이WITH acquisition_data AS ( SELECT strftime ('%Y', acquisition_date) AS acquisition_year, COUNT(*..

[SQL] solvesql Advent of SQL 2024 22일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com22일차 - 친구 수 집계하기: https://solvesql.com/problems/number-of-friends/ https://solvesql.com/problems/number-of-friends/ solvesql.com # 풀이WITH normalized_edges AS ( SELECT CASE WHEN user_a_id normalized_edges CTESELECTCASE WHEN user_a_i..

[SQL] solvesql Advent of SQL 2024 21일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com21일차 - 세션 유지 시간을 10분으로 재정의하기: https://solvesql.com/problems/redefine-session-2/ https://solvesql.com/problems/redefine-session-2/ solvesql.com  # 풀이WITH user_events AS ( SELECT user_pseudo_id, event_timestamp_kst, event_name, ..

[SQL] solvesql Advent of SQL 2024 20일차

# 링크solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/ https://solvesql.com/collections/advent-of-sql-2024/ solvesql.com20일차 - 미세먼지 수치의 계절간 차이: https://solvesql.com/problems/finedust-seasonal-summary/ https://solvesql.com/problems/finedust-seasonal-summary/ solvesql.com  # 풀이WITH seasonal_data AS ( SELECT CASE WHEN measured_at BETWEEN '2022-03-01' A..

728x90