세모이
개발 계발
세모이
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • 알고리즘 (1)
    • 자바스크립트 (29)
    • 리액트 (10)
    • HTML&CSS (2)
    • TIL (26)
    • 파이썬 (8)
    • Dev (1)
    • 데일리 (3)
      • 2023 (3)
    • 에러일기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트
  • 모던 자바스크립트
  • 자바스크립트 빌트인 객체
  • html 신기한 태그
  • 리액트 key
  • 자바스크립트 함수와 일급 객체
  • 개발자 도구 Network
  • 옵셔널 체이닝
  • 함수
  • 자바스크립트 전역 변수의 문제점
  • &&연산자
  • 자바스크립트 생성자 함수에 의한 객체 생성
  • 모던 자바스크립트 deep deive
  • 자바스크립트 프로토타입
  • 자바스크립트 strict mode
  • 자바스크립트 프로퍼티 어트리뷰트
  • const let 키워드와 블록레벨 스코프
  • 모던 자바스크립트 deep dive
  • 시멘틱 태그
  • 자바스크립트 깊은 복사 얕은 복사

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
세모이

개발 계발

데일리/2023

[SQL] 중첩집계함수, SQL 실행순서, 이너조인, 아우터조인

2023. 11. 9. 22:10
반응형

중첩 집계 함수

중첩된 집계 함수 - 하나 이상의 집계 함수가 서로 중첩되어 사용되는 경우를 의미

SELECT 메뉴ID, 사용유형코드, AVG(COUNT(*)) AS AVGCNT
FROM 시스템사용이력
GROUP BY 메뉴ID, 사용유형코드;
  • AVG(COUNT(*))와 같은 구문에서는 COUNT 함수가 먼저 실행되어 각 그룹에서 레코드 수를 계산하고, 이후 AVG 함수가 이 레코드 수의 평균을 계산하려고 시도하는데 이는 각 그룹에 대한 평균을 계산하기 위해 이미 계산된 값들에 대해 또 다른 집계 함수를 적용하려고 하기 때문에 문제가 발생
  • 중첩된 집계 함수를 사용하려는 경우에는 서브쿼리를 활용하여 중첩된 집계 함수를 방지할 수 있음



SQL 실행순서

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT/OFFSET



TOP()

SELECT TOP(3) WITH TIES 팀명, 승리건수
FROM 팀별성적
ORDER BY 승리건수 DESC;
  • SQL Server의 TOP N 질의문에서 N에 해당하는 값이 동일한 경우 함께 출력되도록 하는 WITH TIES 옵션을 ORDER BY 절과 함께 사용해야 함



INNER JOIN, OUTER JOIN

INNER JOIN

  • INNER JOIN은 두 테이블 간에 공통된 값을 기준으로 조인을 수행
  • 이는 두 테이블에서 일치하는 값을 가지는 행만 반환하며, 일치하는 값이 없는 경우 해당 행은 결과에서 제외. 즉, INNER JOIN은 교집합에 해당하는 결과를 반환

OUTER JOIN

  • OUTER JOIN은 왼쪽, 오른쪽, 또는 양쪽 테이블에서 일치하는 값이 없는 경우에도 모든 행을 반환
  • LEFT JOIN과 RIGHT JOIN은 각각 왼쪽 또는 오른쪽 테이블의 모든 행을 유지하면서, 다른 테이블과 일치하는 값이 있는 경우 해당 행을 반환
  • FULL JOIN은 두 테이블 모두에서 모든 행을 유지
  • LEFT, RIGHT 일때 기준 테이블은 항상 표시

employees table

emp_id emp_name dept_id
1 John 101
2 Mike 102
3 Sarah 101
4 Emma 103

departments table

dept_id dept_name
101 IT
102 HR
  • 이너 조인
SELECT employees.emp_name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.dept_id;
emp_name dept_name
John IT
Mike HR
Sarah IT
  • 레프트 조인
SELECT employees.emp_name, departments.dept_name
FROM employees
LEFT JOIN departments
ON employees.dept_id = departments.dept_id;
emp_name dept_name
John IT
Mike HR
Sarah IT
Emma (null)
반응형

'데일리 > 2023' 카테고리의 다른 글

[SQL] 데이터 모델링, 엔터티, 식별자  (0) 2023.11.13
[SQL] START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY  (0) 2023.11.10
    '데일리/2023' 카테고리의 다른 글
    • [SQL] 데이터 모델링, 엔터티, 식별자
    • [SQL] START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY
    세모이
    세모이
    개발 공부!

    티스토리툴바