본문 바로가기

SQL6

SQL 서브쿼리(하위쿼리) 사용법: WHERE, FROM, SELECT절 예제 완벽 가이드 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [SQL JOIN의 모든 것: INNER JOIN과 LEFT JOIN의 결정적 차이]를 통해, 우리는 여러 테이블에 흩어져 있는 데이터를 하나로 합치는 강력한 기술을 배웠습니다. 하지만 실무의 질문은 여기서 한 단계 더 나아갑니다. "전체 직원의 '평균 연봉'보다 더 많은 연봉을 받는 직원들은 누구인가요?" 이 질문을 듣고, 혹시 `WHERE salary > AVG(salary)` 라고 쓰면 되지 않을까 생각하셨나요? 안타깝게도 이 쿼리는 에러를 발생시킵니다. SQL의 실행 순서상 `WHERE`절이 실행되는 시점에는 아직 전체 평균 연봉(`AVG(salary)`)이 계산되지 않았기 때문이죠. 이 문제를 해결하려면 (1.. 2025. 6. 18.
주니어 분석가가 가장 많이 헷갈리는 INNER JOIN과 LEFT JOIN, 이 글 하나로 끝! 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [CASE WHEN으로 데이터에 새로운 조건과 카테고리 만들기]를 통해, 우리는 데이터를 입맛에 맞게 '재창조'하는 강력한 무기를 손에 넣었습니다. 하지만 지금까지 우리는 `employees`라는 단 하나의 테이블 안에서만 데이터를 지지고 볶았습니다. 현실 세계의 데이터는 어떨까요? 훨씬 더 복잡합니다. 고객 정보는 `고객 테이블`에, 주문 내역은 `주문 테이블`에, 상품 정보는 `상품 테이블`에 각각 나뉘어 저장되어 있죠.바로 여기서 실무의 가장 큰 장벽이 등장합니다. "직원 정보는 `employees` 테이블에 있는데, 각 직원이 어떤 프로젝트에 참여했는지는 `projects`라는 다른 테이블에 있다면 어떻게 하죠.. 2025. 6. 16.
SQL CASE WHEN 사용법: 데이터 카테고리화 및 조건 부여 완벽 가이드 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [데이터 분석의 꽃, GROUP BY와 HAVING 절 완벽 이해하기]를 통해, 우리는 데이터를 그룹으로 묶어 '부서별' 평균 연봉과 같은 한 차원 높은 분석을 할 수 있게 되었습니다. 하지만 실무에서는 이런 요구사항을 더 자주 마주하게 됩니다. "알겠습니다. 그럼 연봉 8000 이상은 '고연봉자', 7000 이상은 '중연봉자', 그 외는 '일반' 이라고 카테고리를 만들어서, 각 그룹별로 몇 명이나 있는지 보여주세요." 생각만 해도 머리가 아파옵니다. 기존 데이터에는 '연봉 등급'이라는 컬럼이 없기 때문이죠. 지금까지 배운 것만으로는 이 문제를 해결할 수 없습니다. 엑셀이라면 IF 함수를 써서 해결했을 텐데... SQ.. 2025. 6. 15.
데이터 분석의 꽃, GROUP BY와 HAVING 절 완벽 이해하기 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [원하는 데이터만 계산하기: 집계함수] 마지막에, 제가 이런 질문을 던졌었죠. "전체 평균 연봉은 알겠는데... 그래서 '부서별' 평균 연봉은 어떻게 구하죠?" 이 질문에 대한 답이 바로 오늘 배울 GROUP BY에 있습니다. 만약 SQL에 GROUP BY가 없었다면, 우리는 데이터 분석가라는 직업 대신 '단순 반복 노동자'가 되었을지도 모릅니다. 그만큼 GROUP BY는 데이터를 그룹으로 묶어 분석의 차원을 바꿔주는, 데이터 분석의 '꽃'과 같은 존재입니다. 오늘 이 글에서는 데이터 분석가라면 반드시 알아야 할 두 가지 핵심 무기, GROUP BY와 HAVING에 대해 A to Z, 하나하나 떠먹여 드리겠습니다. 이.. 2025. 6. 14.
SQL 집계함수 완벽 가이드: COUNT, SUM, AVG, MAX, MIN 사용법 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [데이터 정렬과 필터링: ORDER BY, DISTINCT, LIMIT 사용법]을 통해, 우리는 뒤죽박죽이던 데이터를 내 입맛에 맞게 '요리'하는 법을 배웠습니다. 데이터를 예쁘게 정렬하고, 필요한 만큼만 골라볼 수 있게 되었죠. 그렇다면 이런 질문이 자연스럽게 생깁니다. "알겠습니다. 재료 손질은 끝났는데, 그래서 이걸로 '계산'은 어떻게 하죠?" 만약 상사가 "우리 회사 총 직원은 몇 명이죠?", "개발팀 평균 연봉은 얼마인가요?"라고 물었을 때, 지금까지 배운 것만으로는 모든 데이터를 화면에 띄우고 직접 눈으로 세거나 계산기를 두드려야 합니다. 데이터가 7건일 때는 괜찮지만, 700만 건이라면 어떨까요? 불가능에.. 2025. 6. 12.
SQL 데이터 정렬과 필터링: ORDER BY, DISTINCT, LIMIT 3총사 완벽 정리 안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다. 지난 포스팅 [SQL 기초 #2: 무료 DB툴 DBeaver 설치 및 연결 방법]을 통해, 우리는 데이터베이스와 대화할 수 있는 '대화 창구'를 성공적으로 마련했습니다. `SELECT * FROM Artist;` 쿼리를 날려 첫 대화도 나눠봤죠. 그렇다면 이런 질문이 자연스럽게 생깁니다. "알겠습니다. 데이터를 조회했는데, 왜 결과가 제멋대로 뒤죽박죽으로 나오죠?" 맞습니다. SQL은 우리가 특별히 명령하지 않으면 데이터를 그냥 있는 그대로, 순서 없이 가져다줄 뿐입니다. 마치 창고에서 물건을 잔뜩 꺼내 왔지만, 아직 정리정돈이 안 된 상태와 같죠. 똑같은 물건이 여러 개 섞여 있거나, 너무 많아서 뭐가 뭔지 알 수 없기도 합니다.. 2025. 6. 10.