본문 바로가기

전체 글9

📌 SQL 가독성 높이기 2 - 줄 맞추는 습관이 만든 생산성 SQL은 '잘 짜는 것' 도 중요하지만, '잘 읽히는 것'이 더 중요할 때 많습니다.특히 실무에서는 쿼리의 **가독성**이 유지보수 속도, 협업의 효율, 코드 검수의 정확도까지 결정합니다. ❌ 가독성 낮은 실무 쿼리 예시SELECT e.emp_id, e.name, d.dept_name, o.order_amount, o.order_date, p.product_name, p.categoryFROM emp e, dept d, orders o, product pWHERE e.dept_id = d.dept_id AND e.emp_id = o.emp_id AND o.product_id = p.product_idAND o.order_status = '배송완료' AND o.order_date >= SYSDATE - .. 2025. 5. 18.
📏 SQL도 글쓰기다 – 줄 맞춰 읽히는 오라클 SQL 작성법 SQL은 단순히 실행되는 명령문이 아니라, 사람이 읽고 관리하는 '문서'입니다.하지만 아직도 실무에서는 이렇게 작성된 쿼리를 자주 봅니다:❌ 가독성 낮은 쿼리 예시 ①SELECT NAME,ID,PHONE,ADDRESS,REMARK FROM EMP WHERE NAME='KIM'; ❌ 가독성 낮은 쿼리 예시 ②SELECT a.name,b.order_amt,c.grade FROM emp a, orders b, vip c WHERE a.id=b.emp_id AND b.vip_id=c.id; ▶ 한 줄에 모든 내용을 밀어 넣으면, 디버깅도 힘들고 협업 시 수정이 부담됩니다.✅ 줄 맞춘 SQL – 수직 정렬 스타일 예시SELECT NAME , ID , PHONE , ADDRESS ,.. 2025. 5. 17.
[SQL]📊 GROUP BY – 집계 기준 설계 3가지 관점 GROUP BY는 SQL에서 가장 자주 쓰이면서도,어떻게 묶느냐에 따라 분석 결과가 달라지는 구문입니다. 이번 글에서는 실무에서 자주 사용되는 GROUP BY 집계 방식 3가지를 소개합니다. ❶ 단일 필드 기준 – 기본 집계예: 지점별 매출 합계SELECT store_id, SUM(sales_amount) AS total_salesFROM salesGROUP BY store_id; ▶ 단순하고 기초적인 집계 방식입니다. ❷ 다중 필드 기준 – 교차 분석용예: 지점 + 상품 카테고리별 매출SELECT store_id, category, SUM(sales_amount) AS total_salesFROM salesGROUP BY store_id, category; ▶ 다중 기준으로 교차된 분석이 가능하며.. 2025. 5. 15.
🔎 서브쿼리 없이 조건만 추출? – EXISTS 패턴 실무 활용법 SQL에서 WHERE 절에 자주 쓰이는 IN과 EXISTS.둘 다 하위 조건을 필터링할 때 사용하는데, EXISTS는 서브쿼리 대체 그 이상의 기능을 합니다. ❶ EXISTS 기본 구조 – 빠르게 조건만 확인SELECT customer_id, nameFROM customer cWHERE EXISTS ( SELECT 1 FROM order o WHERE o.customer_id = c.customer_id); 이 쿼리는 '주문이 존재하는 고객만 추출'합니다.▶ 서브쿼리 내용은 중요하지 않고, **결과 유무만 체크**▶ SELECT 1 처럼 반환 값은 의미 없음❷ IN vs EXISTS – 실무에서 성능 차이 발생IN은 하위 쿼리 결과를 **전체 메모리에 올려 비교**하는 방식이고,EXISTS는 조건.. 2025. 5. 14.
📄 WITH 절은 서브쿼리보다 더 강력하다 복잡한 SQL을 다루다 보면, 서브쿼리를 중첩해서 사용하는 경우가 많습니다.하지만 실무에서는 점점 더 WITH 절을 활용하는 흐름으로 가고 있죠.왜 그럴까요? 이번 포스팅에서 WITH 절(공통 테이블 표현식, CTE)이 실무에서 선호되는 이유를 소개합니다. ❶ 쿼리 가독성이 뛰어나다다음 두 쿼리를 비교해볼까요?-- 서브쿼리 방식SELECT a.dept_id, a.name, (SELECT COUNT(*) FROM employee b WHERE b.dept_id = a.dept_id) AS emp_countFROM department a; 이제 동일한 쿼리를 WITH 절로 바꿔봅니다:WITH emp_count_by_dept AS ( SELECT dept_id, CO.. 2025. 5. 13.
🧩 CASE WHEN이 필터링에도 쓰인다고요? CASE WHEN 구문은 SQL에서 흔히 쓰는 조건 분기 출력용 문법입니다.하지만 실무에서는 이 구문을 활용해 조건 필터링, 동적 집계, 다중 조건 처리까지 처리하는 경우도 많습니다. 이번 포스팅에서는 단순 결과 출력 외에 CASE WHEN을 활용한 두 가지 예제를 소개합니다. ❶ 특정 조건에만 필터링 적용하는 방식예: VIP 고객만 필터하고, 일반 고객은 무시SELECT user_id, CASE WHEN grade = 'VIP' THEN order_amount ELSE NULL END AS vip_amountFROM orders; 조건절로 필터링하지 않아도, 원하는 행만 분기해서 데이터 출력이 가능합니다.활용 포인트:▶ 필터링과 동시에 데이터 .. 2025. 5. 11.