월하점
월하점의 개발 공부 일지
월하점
전체 방문자
오늘
어제
  • 분류 전체보기 (96)
    • Back-end (3)
    • PROJECT (1)
    • CS (15)
      • Operating System (0)
      • Network (4)
      • Data Structure (7)
      • Algorithm (0)
      • Database (4)
    • Problem Solving (52)
    • Programming Languages (1)
      • Javascript (0)
      • Python (1)
      • JAVA (0)
    • Codestates BEB 4기 (7)
    • Blockchain (12)
    • Linux (2)
    • Git (1)
    • 잡다한 (2)

공지사항

인기 글

태그

  • 네트워크
  • node.js
  • 프로그래머스
  • Python
  • 알고리즘
  • javascript
  • CS
  • SWEA
  • django
  • 자료구조
  • baekjoon

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
월하점

월하점의 개발 공부 일지

  • HOME
  • GUEST
  • WRITE
CS/Database

[SQL] TestDome Solution - Workers

2022. 9. 16. 18:51

문제

The following data definition defines an organization's employee hierarchy.

An employee is a manager if any other employee has their managerId set to this employee's id. That means John is a manager if at least one other employee has their managerId set to John's id.

TABLE employees
  id INTEGER NOT NULL PRIMARY KEY
  managerId INTEGER
  name VARCHAR(30) NOT NULL
  FOREIGN KEY (managerId) REFERENCES employees(id)

Write a query that selects only the names of employees who are not managers.

 

 

 

답안

3가지 방법으로 데이터를 추출할 수 있다.

 

    1. NOT IN

select name
from employees
where id not in (
                select a.id
                from employees as a
                inner join employees as b
                on a.id = b.managerId
                )

 

    2. LEFT JOIN & IS NULL

select a.name
from employees as a
left join employees as b 
on a.id = b.managerId
where b.name is null

 

    3. NOT EXISTS

select name
from employees as a
where not exists
                 (
                   select name
                   from employees as b
                   where a.id = b.managerId
                 )

 

 

  • name 컬럼이 인덱스처리가 된 경우 성능차이는 없다.
  • 만약, name 컬럼이 NOT NULL임을 보장하지 않는 경우 하위 쿼리 결과 집합에 NULL 값이 있는지 여부에 따라 다른 결과가 생성되므로
  • NOT IN 대신 LEFT JOIN / IS NULL 또는 NOT EXISTS를 사용해야한다.
저작자표시 비영리 변경금지 (새창열림)

'CS > Database' 카테고리의 다른 글

[SQL] TestDome Solution - Users And Roles  (0) 2022.09.19
인스타그램 (Instagram) 스키마 디자인 - 관계형 데이터베이스로 설계  (0) 2022.05.25
트랜잭션의 특성 - ACID  (0) 2022.05.12
    'CS/Database' 카테고리의 다른 글
    • [SQL] TestDome Solution - Users And Roles
    • 인스타그램 (Instagram) 스키마 디자인 - 관계형 데이터베이스로 설계
    • 트랜잭션의 특성 - ACID
    월하점
    월하점
    개발 공부를 기록합니다. 웹을 위주로 공부하며 컴퓨터과학 이론도 함께 정리할 계획입니다.

    티스토리툴바