Snippets
헷갈리기 쉽거나 자주 잊어버리는 명령어/코드 모음입니다.
📁📂MySQL(13)
CASE WHEN으로 행을 열로 피벗하기
SUM(CASE WHEN col = 'A' THEN 1 ELSE 0 END) AS a_countGROUP BY 결과를 카테고리별 열로 펼쳐서 출력할 때 사용
mysqlGROUP BY에 없는 컬럼을 SELECT하면 생기는 문제 (ONLY_FULL_GROUP_BY)
SELECT col1, MAX(col2) FROM t GROUP BY col1GROUP BY 기준에 없는 컬럼을 그대로 SELECT하면 설정에 따라 에러 또는 예측 불가한 값이 나옴
mysqlNULL 값 처리 (IFNULL, COALESCE)
IFNULL(column, 0)NULL을 기본값으로 치환하거나 조건에서 제외할 때 사용
mysqlWHERE와 HAVING의 차이
SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 1WHERE는 집계 전 행 필터, HAVING은 집계 후 그룹 필터
mysql같은 테이블끼리 조인하기 (Self Join)
SELECT a.*, b.* FROM t a JOIN t b ON a.parent_id = b.id계층 구조나 짝 관계처럼 같은 테이블 내부 행끼리 비교할 때 사용
mysql그룹별 상위 N개 뽑기 (Top-N per Group)
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY g ORDER BY v DESC) AS rn FROM t) x WHERE rn <= N장르/카테고리별로 상위 N개만 추출할 때 사용
mysql날짜/시간 포맷과 차이 계산
DATE_FORMAT(date_col, '%Y-%m-%d'), TIMESTAMPDIFF(HOUR, a, b)날짜 출력 형식 변경과 두 시각 사이의 차이 계산
mysql다중 조건 정렬 (동점 처리)
ORDER BY col1 DESC, col2 ASC1차 정렬 기준이 같을 때 2차 기준으로 순서를 확정
mysql문자열 함수 모음 (SUBSTRING, CONCAT, REPLACE)
SUBSTRING(str, 1, 2)문자열 자르기, 합치기, 치환
mysql비트 연산으로 플래그 조건 다루기
column & 1 = 1이진 상태값(플래그)을 비트 연산자로 필터링
mysql서브쿼리 안에서 LIMIT 우회하기
WHERE id IN (SELECT id FROM (SELECT id FROM t ORDER BY x LIMIT 3) AS tmp)MySQL은 IN/ALL/ANY/SOME 서브쿼리 안에 LIMIT를 직접 못 씀 — derived table로 한 번 더 감싸서 우회
mysql윈도우 함수로 그룹별 순위 매기기
RANK() OVER (PARTITION BY col ORDER BY val DESC)GROUP BY 없이 원본 행을 유지한 채 그룹별 순위/누적값 계산
mysql재귀 쿼리로 없는 데이터 채우기 (WITH RECURSIVE)
WITH RECURSIVE seq AS (SELECT 0 AS n UNION ALL SELECT n + 1 FROM seq WHERE n < 23) SELECT * FROM seq0~23시처럼 원본 테이블에 존재하지 않는 값까지 포함해서 조회할 때 사용
mysql
📁📂C++(7)
2차원 벡터 초기화
vector<vector<int>>2차원 배열이 필요할 때 크기와 초기값을 한 번에 잡는 법
cppmap / unordered_map 기본 사용법
unordered_map<string,int>빈도수 세기, key 존재 확인 등 해시 문제에서 매번 쓰는 패턴
cpppair / tuple 다루기
pair<int,int> / tuple<int,int,int>좌표, (값,인덱스) 묶음 등 두 개 이상 값을 묶어 다룰 때 쓰는 법
cppsort 커스텀 comparator
sort(v.begin(), v.end(), cmp)기본 오름차순 말고 원하는 기준으로 정렬하는 법
cppvector 순회 (range-based for)
for (auto& x : v) { ... }인덱스 없이 vector의 각 원소를 순회한다. 일반 for문(인덱스 기반)과 헷갈릴 때 참고.
cpp문자열 split
istringstream + getlineC++엔 split()이 없어서 sstream으로 직접 토큰화한다
cpp문자열 숫자 변환
to_string / stoi / stol / stoll / stod문자열과 숫자 타입을 서로 변환하는 표준 함수 모음
cpp