leetcode
오늘밤공부
2023. 5. 26. 11:00
2023. 5. 26. 11:00
🗓️ 문제 설명
- Trips 테이블의 id, client_id, driver_id, city_id, status, request_at은 각각 ID, 클라이언트 ID, 운전자 ID, 도시 ID, 상태, 요청 날짜를 나타냅니다.
- id는 기본키이며, client_id와 driver_id는 Users 테이블의 외래키입니다.
- Status 컬럼에는 'completed', 'cancelled_by_driver', 'cancelled_by_client'가 있습니다.
Column name |
Type |
id |
int |
client_id |
int |
driver_id |
int |
city_id |
int |
status |
enum |
request_at |
date |
- Users 테이블의 users_id, banned, role은 각각 id, 취소여부, 역할을 나타냅니다.
- users_id는 기본키입니다.
- role은 'client', 'driver', 'partner'가 있으며, banned는 'Yes', 'No'가 있습니다.
Column name |
Type |
user_id |
int |
banned |
enum |
role |
enum |
❓문제
- 취소 비율은 해당 날짜에 차단되지 않은 사용자가 있는 취소된(클라이언트 또는 드라이버에 의한) 요청 수를 금지되지 않은 사용자가 있는 총 요청 수로 나누어 계산합니다.
- '2013-10-01'과 '2013-10-03' 사이에 금지되지 않은 사용자(클라이언트와 드라이버 모두 금지되지 않아야 함)가 있는 요청의 취소 비율을 찾기 위한 SQL문을 작성해주세요.
- 취소 비율은 소수점 둘째 자리까지만 나타내주세요.
- 문제 예시
Trips
id |
client_id |
driver_id |
city_id |
status |
request_at |
1 |
1 |
10 |
1 |
completed |
2013-10-01 |
2 |
2 |
11 |
1 |
cancelled_by_driver |
2013-10-01 |
3 |
3 |
12 |
6 |
completed |
2013-10-01 |
4 |
4 |
13 |
6 |
cancelled_by_client |
2013-10-01 |
5 |
1 |
10 |
1 |
completed |
2013-10-02 |
6 |
2 |
11 |
6 |
completed |
2013-10-02 |
7 |
3 |
12 |
6 |
completed |
2013-10-02 |
8 |
2 |
12 |
12 |
completed |
2013-10-03 |
9 |
3 |
10 |
12 |
completed |
2013-10-03 |
10 |
4 |
13 |
12 |
cancelled_by_driver |
2013-10-03 |
Users
user_id |
banned |
role |
1 |
No |
client |
2 |
Yes |
client |
3 |
No |
client |
4 |
No |
client |
10 |
No |
driver |
11 |
No |
driver |
12 |
No |
driver |
13 |
No |
driver |
Day |
Cancellation Rate |
2013-10-01 |
0.33 |
2013-10-02 |
0.00 |
2013-10-03 |
0.50 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 25. 11:04
2023. 5. 25. 11:04
🗓️ 문제 설명
- Courses 테이블의 student, class는 각각 학생 이름, 과목을 나타냅니다.
- Student, class는 기본키입니다.
Column name |
Type |
student |
varchar |
class |
varchar |
❓문제
- 최소한 5명 이상의 학생들이 듣는 수업을 조회하는 SQL문을 작성해주세요.
- 문제 예시
student |
class |
A |
Math |
B |
English |
C |
Math |
D |
Biology |
E |
Math |
F |
Computer |
G |
Math |
H |
Math |
I |
Math |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 23. 11:00
2023. 5. 23. 11:00
🗓️ 문제 설명
- World 테이블의 name, continent, area, population, gdp는 각각 나라이름, 대륙, 면적, 인구, GDP 값을 의미합니다.
- name은 기본키입니다.
Column name |
Type |
name |
varchar |
continent |
varchar |
area |
int |
population |
int |
gdp |
bigint |
❓문제
- 면적이 최소 3,000,000km² 이상이거나 인구가 최소 25,000,000명 이상인 경우 큰 나라라고 합니다.
- 큰 나라의 이름, 인구, 면적을 조회하는 SQL문을 작성해주세요.
- 문제 예시
name |
continent |
area |
population |
gdp |
Afghanistan |
Asia |
652230 |
25500100 |
20343000000 |
Albania |
Europe |
28748 |
2831741 |
12960000000 |
Algeria |
Africa |
2381741 |
37100000 |
188681000000 |
Andorra |
Europe |
468 |
78115 |
3712000000 |
Angola |
Africa |
1246700 |
20609294 |
100990000000 |
name |
population |
area |
Afghanistan |
25500100 |
652230 |
Algeria |
37100000 |
2381741 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 22. 11:00
2023. 5. 22. 11:00
🗓️ 문제 설명
- Employee 테이블의 id, name, department, managerId는 각각 직원 ID, 직원 이름, 부서명, 관리자 ID를 나타냅니다.
- ID는 기본키입니다.
- managerId가 null이라면 관리자가 없는 직원입니다.
Column name |
Type |
id |
int |
name |
varchar |
department |
varchar |
managerId |
int |
❓문제
- 최소 5명의 부하 직원이 있는 관리자를 조회하는 SQL문을 작성해주세요.
- 문제 예시
id |
name |
department |
managerId |
101 |
John |
A |
None |
102 |
Dan |
A |
101 |
103 |
James |
A |
101 |
104 |
Amy |
A |
101 |
105 |
Anne |
A |
101 |
106 |
Ron |
B |
101 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 19. 10:35
2023. 5. 19. 10:35
🗓️ 문제 설명
- Employee 테이블의 id, name, salary, departmentId는 각각 직원 ID, 직원 이름, 임금, 부서 ID를 나타냅니다.
- Id는 기본키이고 departmentId는 Department 테이블의 외래키입니다.
Column name |
Type |
id |
int |
name |
varchar |
salary |
int |
departmentId |
int |
- Department 테이블의 id, name은 각각 부서 ID, 부서명을 나타냅니다.
- Id는 기본키입니다.
Column name |
Type |
id |
int |
name |
varchar |
❓문제
- 회사의 경영진은 회사의 각 부서에서 가장 많은 돈을 버는 사람을 확인하는 데 관심이 있습니다.
- 부서의 고소득자는 해당 부서의 임금 상위 3위 안에 드는 임금을 받는 직원입니다.
- 부서별 고소득 사원을 찾는 SQL문을 작성해주세요.
- 순서에 상관없이 결과 테이블을 반환해주세요.
- 문제 예시
Employee
id |
name |
salary |
departmentId |
1 |
Joe |
85000 |
1 |
2 |
Henry |
80000 |
2 |
3 |
Sam |
60000 |
2 |
4 |
Max |
90000 |
1 |
5 |
Janet |
69000 |
1 |
6 |
Randy |
85000 |
1 |
7 |
Will |
70000 |
1 |
Department
Department |
Employee |
Salary |
IT |
Max |
90000 |
IT |
Joe |
85000 |
IT |
Randy |
85000 |
IT |
Will |
70000 |
Sales |
Henry |
80000 |
Sales |
Sam |
60000 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 18. 11:06
2023. 5. 18. 11:06
🗓️ 문제 설명
- Orders 테이블의 order_number는 주문 ID를 나타내며, customer_number는 고객 ID를 나타냅니다.
- Orders테이블의 기본키는 order_number입니다.
Column name |
Type |
order_number |
int |
customer_number |
int |
❓문제
- 가장 많은 주문을 한 고객 ID를 찾는 SQL문을 작성해주세요.
- 테스트 케이스는 정확히 한 명의 고객이 다른 고객보다 더 많은 주문을 하도록 생성되었습니다.
- 문제 예시
order_number |
customer_number |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
3 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 16. 11:00
2023. 5. 16. 11:00
🗓️ 문제 설명
- Customer 테이블의 id는 기본키입니다.
- Customer의 id, name, referee_id는 각각 고객 ID, 고객 이름, 추천한 고객의 ID를 나타냅니다.
Column name |
Type |
id |
int |
name |
varchar |
referee_id |
int |
❓문제
- Id가 2인 고객이 추천하지 않은 고객의 이름을 조회하는 SQL문을 작성해주세요.
- 순서에 상관없이 결과 테이블을 반환해주세요.
- 문제 예시
id |
name |
referee_id |
1 |
Will |
null |
2 |
Jane |
null |
3 |
Alex |
2 |
4 |
Bill |
null |
5 |
Zack |
1 |
6 |
Mark |
2 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 15. 10:51
2023. 5. 15. 10:51
🗓️ 문제 설명
- Activity 테이블은 일부 게임의 플레이어 활동을 보여주며, player_id, event_date는 기본키입니다.
- 각 행은 로그하웃하기 전에 로그인하고 여러 게임을 플레이한 플레이어의 기록입니다.
Column name |
Type |
player_id |
int |
device_id |
int |
event_date |
date |
games_played |
int |
❓문제
- 처음 로그인한 날의 다음 날 다시 로그인한 플레이어의 비율을 소수점 둘째 자리에서 반올림하여 조회하는 SQL문을 작성해주세요.
- 첫 로그인 날짜부터 연속 2일 이상 로그인한 플레이어 수를 세고 그 수를 총 플레이어 수로 나누어주세요.
- 문제 예시
player_id |
device_id |
event_date |
games_played |
1 |
2 |
2016-03-01 |
5 |
1 |
2 |
2016-03-02 |
6 |
2 |
3 |
2017-06-25 |
1 |
3 |
1 |
2016-03-02 |
0 |
3 |
4 |
2018-07-03 |
5 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 12. 11:01
2023. 5. 12. 11:01
🗓️ 문제 설명
- Insurance 테이블의 pid는 기본키입니다.
- pid, tiv_2015, tiv_2016, lat, lon는 각각 보험 계약자의 정책 ID, 2015년 총 투자 가치, 2016년 총 투자 가치, 보험계약자 도시의 위도와 경도를 나타냅니다.
Column name |
Type |
pid |
int |
tiv_2015 |
float |
tiv_2016 |
float |
lat |
float |
lon |
float |
❓문제
- 모든 보험 계약자에 대한 2016년의 총 투자 가치 합계를 조회하는 SQL문을 작성해주세요
- 한 명 이상의 다른 보험 계약자와 동일한 2015년 총 투자 가치 값을 가지며, 다른 보험 계약자와 같은 도시에 있지 않는 데이터를 조회해주세요(lat, lon 값은 중복되지 않아야 합니다).
- 결과는 소수 둘째 자리에서 반올림해주세요.
- 문제 예시
pid |
tiv_2015 |
tiv_2016 |
lat |
lon |
1 |
10 |
5 |
10 |
10 |
2 |
20 |
20 |
20 |
20 |
3 |
10 |
30 |
20 |
20 |
4 |
10 |
40 |
40 |
40 |
💻 코드
최종 코드
코드 풀이
오늘밤공부
2023. 5. 11. 11:00
2023. 5. 11. 11:00
🗓️ 문제 설명
- Employee 테이블은 empId를 기본키로 가지며, empId, name, supervisor, salary는 각각 직원 ID, 이름, 감독관 ID, 임금을 나타냅니다.
Column name |
Type |
empId |
int |
name |
varchar |
supervisor |
int |
salary |
int |
- Bonus 테이블은 empId를 기본키로 가지며, empId는 employee의 외래키입니다.
- Bonus 테이블의 empId, bonus는 각각 직원 ID, 보너스를 의미합니다.
Column name |
Type |
empId |
int |
bonus |
int |
❓문제
- 1000 이하의 보너스를 받는 직원의 이름과 보너스 금액을 조회하는 SQL을 작성해주세요.
- 문제 예시
Employee
empId |
name |
supervisor |
salary |
3 |
Brad |
null |
4000 |
1 |
John |
3 |
1000 |
2 |
Dan |
3 |
2000 |
4 |
Thomas |
3 |
4000 |
Bonus
name |
bonus |
Brad |
null |
John |
null |
Dan |
500 |
💻 코드
최종 코드
코드 풀이