diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/131535.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\355\232\214\354\233\220\354\210\230\342\200\205\352\265\254\355\225\230\352\270\260/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/131535.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\355\232\214\354\233\220\354\210\230\342\200\205\352\265\254\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..9fcf33c --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/131535.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\355\232\214\354\233\220\354\210\230\342\200\205\352\265\254\355\225\230\352\270\260/README.md" @@ -0,0 +1,130 @@ +# [level 1] 조건에 맞는 회원수 구하기 - 131535 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/131535) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 16:19:12 + +### 문제 설명 + +
다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.
| Column name | +Type | +Nullable | +
|---|---|---|
| USER_ID | +INTEGER | +FALSE | +
| GENDER | +TINYINT(1) | +TRUE | +
| AGE | +INTEGER | +TRUE | +
| JOINED | +DATE | +FALSE | +
GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.
USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
예를 들어 USER_INFO 테이블이 다음과 같다면
| USER_ID | +GENDER | +AGE | +JOINED | +
|---|---|---|---|
| 1 | +1 | +26 | +2021-10-05 | +
| 2 | +0 | +NULL | +2021-11-25 | +
| 3 | +1 | +22 | +2021-11-30 | +
| 4 | +0 | +31 | +2021-12-03 | +
| 5 | +0 | +28 | +2021-12-16 | +
| 6 | +1 | +24 | +2022-01-03 | +
| 7 | +1 | +NULL | +2022-01-09 | +
2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원은 USER_ID 가 1, 3, 5 인 회원들 이므로, 다음과 같이 결과가 나와야 합니다.
| USERS | +
|---|
| 3 | +
DEVELOPER_INFOS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다. DEVELOPER_INFOS 테이블 구조는 다음과 같으며, ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_1, SKILL_2, SKILL_3는 각각 ID, 이름, 성, 이메일, 첫 번째 스킬, 두 번째 스킬, 세 번째 스킬을 의미합니다.
| NAME | +TYPE | +UNIQUE | +NULLABLE | +
|---|---|---|---|
| ID | +VARCHAR(N) | +Y | +N | +
| FIRST_NAME | +VARCHAR(N) | +N | +Y | +
| LAST_NAME | +VARCHAR(N) | +N | +Y | +
| VARCHAR(N) | +Y | +N | +|
| SKILL_1 | +VARCHAR(N) | +N | +Y | +
| SKILL_2 | +VARCHAR(N) | +N | +Y | +
| SKILL_3 | +VARCHAR(N) | +N | +Y | +
DEVELOPER_INFOS 테이블에서 Python 스킬을 가진 개발자의 정보를 조회하려 합니다. Python 스킬을 가진 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
+ +예를 들어 DEVELOPER_INFOS 테이블이 다음과 같다면
| ID | +FIRST_NAME | +LAST_NAME | +SKILL_1 | +SKILL_2 | +SKILL_3 | +|
|---|---|---|---|---|---|---|
| D165 | +Jerami | +Edwards | +jerami_edwards@grepp.co |
+Java | +JavaScript | +Python | +
| D161 | +Carsen | +Garza | +carsen_garza@grepp.co |
+React | ++ | + |
| D164 | +Kelly | +Grant | +kelly_grant@grepp.co |
+C# | ++ | + |
| D163 | +Luka | +Cory | +luka_cory@grepp.co |
+Node.js | ++ | + |
| D162 | +Cade | +Cunningham | +cade_cunningham@grepp.co |
+Vue | +C++ | +Python | +
다음과 같이 Python 스킬을 가진 개발자의 정보가 결과에 나와야 합니다.
+| ID | +FIRST_NAME | +LAST_NAME | +|
|---|---|---|---|
| D162 | +cade_cunningham@grepp.co |
+Cade | +Cunningham | +
| D165 | +jerami_edwards@grepp.co |
+Jerami | +Edwards | +
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
+| ANIMAL_ID | +ANIMAL_TYPE | +DATETIME | +INTAKE_CONDITION | +NAME | +SEX_UPON_INTAKE | +
|---|---|---|---|---|---|
| A349996 | +Cat | +2018-01-22 14:32:00 | +Normal | +Sugar | +Neutered Male | +
| A350276 | +Cat | +2017-08-13 13:50:00 | +Normal | +Jewel | +Spayed Female | +
| A350375 | +Cat | +2017-03-06 15:01:00 | +Normal | +Meo | +Neutered Male | +
| A352555 | +Dog | +2014-08-08 04:20:00 | +Normal | +Harley | +Spayed Female | +
..이하 생략
+ +본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59034.\342\200\205\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260/\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260.sql" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59034.\342\200\205\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260/\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260.sql" new file mode 100644 index 0000000..1e2092f --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59034.\342\200\205\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260/\353\252\250\353\223\240\342\200\205\353\240\210\354\275\224\353\223\234\342\200\205\354\241\260\355\232\214\355\225\230\352\270\260.sql" @@ -0,0 +1,4 @@ +-- 코드를 입력하세요 +SELECT * +FROM ANIMAL_INS +ORDER BY ANIMAL_ID ASC \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..0a0bd1b --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/README.md" @@ -0,0 +1,99 @@ +# [level 1] 역순 정렬하기 - 59035 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/59035) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 14:41:03 + +### 문제 설명 + +ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
+| NAME | +DATETIME | +
|---|---|
| Rocky | +2016-06-07 09:17:00 | +
| Shelly | +2015-01-29 15:01:00 | +
| Benji | +2016-04-19 13:28:00 | +
| Jackie | +2016-01-03 16:25:00 | +
| *Sam | +2016-03-13 11:17:00 | +
..이하 생략
+ +본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" new file mode 100644 index 0000000..b2aa0e5 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59035.\342\200\205\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\255\354\210\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" @@ -0,0 +1,4 @@ +-- 코드를 입력하세요 +SELECT NAME,DATETIME +FROM ANIMAL_INS +ORDER BY ANIMAL_ID DESC; \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59036.\342\200\205\354\225\204\355\224\210\342\200\205\353\217\231\353\254\274\342\200\205\354\260\276\352\270\260/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59036.\342\200\205\354\225\204\355\224\210\342\200\205\353\217\231\353\254\274\342\200\205\354\260\276\352\270\260/README.md" new file mode 100644 index 0000000..3206685 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59036.\342\200\205\354\225\204\355\224\210\342\200\205\353\217\231\353\254\274\342\200\205\354\260\276\352\270\260/README.md" @@ -0,0 +1,145 @@ +# [level 1] 아픈 동물 찾기 - 59036 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/59036) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 15:54:05 + +### 문제 설명 + +ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
+ +예를 들어 ANIMAL_INS 테이블이 다음과 같다면
| ANIMAL_ID | +ANIMAL_TYPE | +DATETIME | +INTAKE_CONDITION | +NAME | +SEX_UPON_INTAKE | +
|---|---|---|---|---|---|
| A365172 | +Dog | +2014-08-26 12:53:00 | +Normal | +Diablo | +Neutered Male | +
| A367012 | +Dog | +2015-09-16 09:06:00 | +Sick | +Miller | +Neutered Male | +
| A365302 | +Dog | +2017-01-08 16:34:00 | +Aged | +Minnie | +Spayed Female | +
| A381217 | +Dog | +2017-07-08 09:41:00 | +Sick | +Cherokee | +Neutered Male | +
이 중 아픈 동물은 Miller와 Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
+| ANIMAL_ID | +NAME | +
|---|---|
| A367012 | +Miller | +
| A381217 | +Cherokee | +
본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ +INTAKE_CONDITION이 Sick 인 경우를 뜻함 ↩
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
+ +예를 들어 ANIMAL_INS 테이블이 다음과 같다면
| ANIMAL_ID | +ANIMAL_TYPE | +DATETIME | +INTAKE_CONDITION | +NAME | +SEX_UPON_INTAKE | +
|---|---|---|---|---|---|
| A365172 | +Dog | +2014-08-26 12:53:00 | +Normal | +Diablo | +Neutered Male | +
| A367012 | +Dog | +2015-09-16 09:06:00 | +Sick | +Miller | +Neutered Male | +
| A365302 | +Dog | +2017-01-08 16:34:00 | +Aged | +Minnie | +Spayed Female | +
| A381217 | +Dog | +2017-07-08 09:41:00 | +Sick | +Cherokee | +Neutered Male | +
이 중 젊은 동물은 Diablo, Miller, Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
+| ANIMAL_ID | +NAME | +
|---|---|
| A365172 | +Diablo | +
| A367012 | +Miller | +
| A381217 | +Cherokee | +
본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ +INTAKE_CONDITION이 Aged가 아닌 경우를 뜻함 ↩
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
+ +예를 들어, ANIMAL_INS 테이블이 다음과 같다면
| ANIMAL_ID | +ANIMAL_TYPE | +DATETIME | +INTAKE_CONDITION | +NAME | +SEX_UPON_INTAKE | +
|---|---|---|---|---|---|
| A349996 | +Cat | +2018-01-22 14:32:00 | +Normal | +Sugar | +Neutered Male | +
| A350276 | +Cat | +2017-08-13 13:50:00 | +Normal | +Jewel | +Spayed Female | +
| A396810 | +Dog | +2016-08-22 16:13:00 | +Injured | +Raven | +Spayed Female | +
| A410668 | +Cat | +2015-11-19 13:41:00 | +Normal | +Raven | +Spayed Female | +
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
+| ANIMAL_ID | +NAME | +DATETIME | +
|---|---|---|
| A350276 | +Jewel | +2017-08-13 13:50:00 | +
| A396810 | +Raven | +2016-08-22 16:13:00 | +
| A410668 | +Raven | +2015-11-19 13:41:00 | +
| A349996 | +Sugar | +2018-01-22 14:32:00 | +
본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59404.\342\200\205\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59404.\342\200\205\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" new file mode 100644 index 0000000..8974a2b --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59404.\342\200\205\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260/\354\227\254\353\237\254\342\200\205\352\270\260\354\244\200\354\234\274\353\241\234\342\200\205\354\240\225\353\240\254\355\225\230\352\270\260.sql" @@ -0,0 +1,4 @@ +-- 코드를 입력하세요 +SELECT ANIMAL_ID,NAME,DATETIME +FROM ANIMAL_INS +ORDER BY NAME,DATETIME DESC \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/README.md" new file mode 100644 index 0000000..e398c64 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/README.md" @@ -0,0 +1,130 @@ +# [level 1] 상위 n개 레코드 - 59405 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/59405) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 16:17:16 + +### 문제 설명 + +ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
| NAME | +TYPE | +NULLABLE | +
|---|---|---|
| ANIMAL_ID | +VARCHAR(N) | +FALSE | +
| ANIMAL_TYPE | +VARCHAR(N) | +FALSE | +
| DATETIME | +DATETIME | +FALSE | +
| INTAKE_CONDITION | +VARCHAR(N) | +FALSE | +
| NAME | +VARCHAR(N) | +TRUE | +
| SEX_UPON_INTAKE | +VARCHAR(N) | +FALSE | +
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
+ +예를 들어 ANIMAL_INS 테이블이 다음과 같다면
| ANIMAL_ID | +ANIMAL_TYPE | +DATETIME | +INTAKE_CONDITION | +NAME | +SEX_UPON_INTAKE | +
|---|---|---|---|---|---|
| A399552 | +Dog | +2013-10-14 15:38:00 | +Normal | +Jack | +Neutered Male | +
| A379998 | +Dog | +2013-10-23 11:42:00 | +Normal | +Disciple | +Intact Male | +
| A370852 | +Dog | +2013-11-03 15:04:00 | +Normal | +Katie | +Spayed Female | +
| A403564 | +Dog | +2013-11-18 17:03:00 | +Normal | +Anna | +Spayed Female | +
이 중 가장 보호소에 먼저 들어온 동물은 Jack입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
+| NAME | +
|---|
| Jack | +
※ 보호소에 가장 먼저 들어온 동물은 한 마리인 경우만 테스트 케이스로 주어집니다.
+ +본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234.sql" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234.sql" new file mode 100644 index 0000000..8d593d5 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/1/59405.\342\200\205\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234/\354\203\201\354\234\204\342\200\205n\352\260\234\342\200\205\353\240\210\354\275\224\353\223\234.sql" @@ -0,0 +1,5 @@ +-- 코드를 입력하세요 +SELECT NAME +FROM ANIMAL_INS +ORDER BY DATETIME ASC +LIMIT 1 \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/README.md" new file mode 100644 index 0000000..c96fef8 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/README.md" @@ -0,0 +1,203 @@ +# [level 2] 업그레이드 된 아이템 구하기 - 273711 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/273711) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 16:40:54 + +### 문제 설명 + +어느 한 게임에서 사용되는 아이템들은 업그레이드가 가능합니다.
+'ITEM_A'->'ITEM_B'와 같이 업그레이드가 가능할 때
+'ITEM_A'를 'ITEM_B' 의 PARENT 아이템,
+ PARENT 아이템이 없는 아이템을 ROOT 아이템이라고 합니다.
예를 들어 'ITEM_A'->'ITEM_B'->'ITEM_C'와 같이 업그레이드가 가능한 아이템이 있다면
+'ITEM_C'의 PARENT 아이템은 'ITEM_B'
+'ITEM_B'의 PARENT 아이템은 'ITEM_A'
+ROOT 아이템은 'ITEM_A'가 됩니다.
다음은 해당 게임에서 사용되는 아이템 정보를 담은 ITEM_INFO 테이블과 아이템 관계를 나타낸 ITEM_TREE 테이블입니다. ITEM_INFO 테이블은 다음과 같으며, ITEM_ID, ITEM_NAME, RARITY, PRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.
| Column name | +Type | +Nullable | +
|---|---|---|
| ITEM_ID | +INTEGER | +FALSE | +
| ITEM_NAME | +VARCHAR(N) | +FALSE | +
| RARITY | +INTEGER | +FALSE | +
| PRICE | +INTEGER | +FALSE | +
ITEM_TREE 테이블은 다음과 같으며, ITEM_ID, PARENT_ITEM_ID는 각각 아이템 ID, PARENT 아이템의 ID를 나타냅니다.
| Column name | +Type | +Nullable | +
|---|---|---|
| ITEM_ID | +INTEGER | +FALSE | +
| PARENT_ITEM_ID | +INTEGER | +TRUE | +
단, 각 아이템들은 오직 하나의 PARENT 아이템 ID를 가지며, ROOT 아이템의 PARENT 아이템 ID는 NULL 입니다.
+ +ROOT 아이템이 없는 경우는 존재하지 않습니다.
+ +아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬주세요.
+ +예를 들어 ITEM_INFO 테이블이 다음과 같고
| ITEM_ID | +ITEM_NAME | +RARITY | +PRICE | +
|---|---|---|---|
| 0 | +ITEM_A | +RARE | +10000 | +
| 1 | +ITEM_B | +RARE | +9000 | +
| 2 | +ITEM_C | +LEGEND | +11000 | +
| 3 | +ITEM_D | +RARE | +10000 | +
| 4 | +ITEM_E | +RARE | +12000 | +
ITEM_TREE 테이블이 다음과 같다면
| ITEM_ID | +PARENT_ITEM_ID | +
|---|---|
| 0 | +NULL | +
| 1 | +0 | +
| 2 | +0 | +
| 3 | +1 | +
| 4 | +1 | +
아이템의 희귀도가 'RARE'인 아이템은 'ITEM_A', 'ITEM_B', 'ITEM_D', 'ITEM_E' 입니다.
+이 중 'ITEM_A' 는 'ITEM_B', 'ITEM_C' 로 업그레이드가 가능하며 'ITEM_B' 는 'ITEM_D' , 'ITEM_E' 로 업그레이드가 가능합니다. 'ITEM_D' 와 'ITEM_E'는 더 이상 업그레이드가 가능하지 않습니다. 따라서 결과는 다음과 같이 나와야 합니다.
| ITEM_ID | +ITEM_NAME | +RARITY | +
|---|---|---|
| 4 | +ITEM_E | +RARE | +
| 3 | +ITEM_D | +RARE | +
| 2 | +ITEM_C | +LEGEND | +
| 1 | +ITEM_B | +RARE | +
※ 참고: 본 문제는 제출 내역 확인 기능을 지원하지 않습니다.
+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260.sql" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260.sql" new file mode 100644 index 0000000..d1a93fe --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/273711.\342\200\205\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260/\354\227\205\352\267\270\353\240\210\354\235\264\353\223\234\342\200\205\353\220\234\342\200\205\354\225\204\354\235\264\355\205\234\342\200\205\352\265\254\355\225\230\352\270\260.sql" @@ -0,0 +1,6 @@ +-- 코드를 작성해주세요 +SELECT I.ITEM_ID,I.ITEM_NAME,I.RARITY +FROM ITEM_INFO I JOIN ITEM_TREE T ON I.ITEM_ID = T.ITEM_ID +JOIN ITEM_INFO P ON P.ITEM_ID = T.PARENT_ITEM_ID +WHERE P.RARITY = 'RARE' +ORDER BY I.ITEM_ID DESC \ No newline at end of file diff --git "a/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/276034.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\352\260\234\353\260\234\354\236\220\342\200\205\354\260\276\352\270\260/README.md" "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/276034.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\352\260\234\353\260\234\354\236\220\342\200\205\354\260\276\352\270\260/README.md" new file mode 100644 index 0000000..a8a93b7 --- /dev/null +++ "b/MySQL/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/2/276034.\342\200\205\354\241\260\352\261\264\354\227\220\342\200\205\353\247\236\353\212\224\342\200\205\352\260\234\353\260\234\354\236\220\342\200\205\354\260\276\352\270\260/README.md" @@ -0,0 +1,240 @@ +# [level 2] 조건에 맞는 개발자 찾기 - 276034 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/276034) + +### 성능 요약 + +메모리: undefined, 시간: + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +합계: 100.0 / 100.0 + +### 제출 일자 + +2026년 10월 31일 17:00:03 + +### 문제 설명 + +SKILLCODES 테이블은 개발자들이 사용하는 프로그래밍 언어에 대한 정보를 담은 테이블입니다. SKILLCODES 테이블의 구조는 다음과 같으며, NAME, CATEGORY, CODE는 각각 스킬의 이름, 스킬의 범주, 스킬의 코드를 의미합니다. 스킬의 코드는 2진수로 표현했을 때 각 bit로 구분될 수 있도록 2의 제곱수로 구성되어 있습니다.
| NAME | +TYPE | +UNIQUE | +NULLABLE | +
|---|---|---|---|
| NAME | +VARCHAR(N) | +Y | +N | +
| CATEGORY | +VARCHAR(N) | +N | +N | +
| CODE | +INTEGER | +Y | +N | +
DEVELOPERS 테이블은 개발자들의 프로그래밍 스킬 정보를 담은 테이블입니다. DEVELOPERS 테이블의 구조는 다음과 같으며, ID, FIRST_NAME, LAST_NAME, EMAIL, SKILL_CODE는 각각 개발자의 ID, 이름, 성, 이메일, 스킬 코드를 의미합니다. SKILL_CODE 컬럼은 INTEGER 타입이고, 2진수로 표현했을 때 각 bit는 SKILLCODES 테이블의 코드를 의미합니다.
| NAME | +TYPE | +UNIQUE | +NULLABLE | +
|---|---|---|---|
| ID | +VARCHAR(N) | +Y | +N | +
| FIRST_NAME | +VARCHAR(N) | +N | +Y | +
| LAST_NAME | +VARCHAR(N) | +N | +Y | +
| VARCHAR(N) | +Y | +N | +|
| SKILL_CODE | +INTEGER | +N | +N | +
예를 들어 어떤 개발자의 SKILL_CODE가 400 (=b'110010000')이라면, 이는 SKILLCODES 테이블에서 CODE가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') 에 해당하는 스킬을 가졌다는 것을 의미합니다.
DEVELOPERS 테이블에서 Python이나 C# 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
+ +예를 들어 SKILLCODES 테이블이 다음과 같고,
| NAME | +CATEGORY | +CODE | +
|---|---|---|
| C++ | +Back End | +4 | +
| JavaScript | +Front End | +16 | +
| Java | +Back End | +128 | +
| Python | +Back End | +256 | +
| C# | +Back End | +1024 | +
| React | +Front End | +2048 | +
| Vue | +Front End | +8192 | +
| Node.js | +Back End | +16384 | +
DEVELOPERS 테이블이 다음과 같다면
| ID | +FIRST_NAME | +LAST_NAME | +SKILL_CODE | +|
|---|---|---|---|---|
| D165 | +Jerami | +Edwards | +jerami_edwards@grepp.co |
+400 | +
| D161 | +Carsen | +Garza | +carsen_garza@grepp.co |
+2048 | +
| D164 | +Kelly | +Grant | +kelly_grant@grepp.co |
+1024 | +
| D163 | +Luka | +Cory | +luka_cory@grepp.co |
+16384 | +
| D162 | +Cade | +Cunningham | +cade_cunningham@grepp.co |
+8452 | +
다음과 같이 DEVELOPERS 테이블에 포함된 개발자 중 Python 스킬이나 C# 스킬을 가진 개발자의 정보가 결과에 나와야 합니다.
| ID | +FIRST_NAME | +LAST_NAME | +|
|---|---|---|---|
| D162 | +cade_cunningham@grepp.co |
+Cade | +Cunningham | +
| D164 | +kelly_grant@grepp.co |
+Kelly | +Grant | +
| D165 | +jerami_edwards@grepp.co |
+Jerami | +Edwards | +
다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.
| Column name | +Type | +Nullable | +
|---|---|---|
| ONLINE_SALE_ID | +INTEGER | +FALSE | +
| USER_ID | +INTEGER | +FALSE | +
| PRODUCT_ID | +INTEGER | +FALSE | +
| SALES_AMOUNT | +INTEGER | +FALSE | +
| SALES_DATE | +DATE | +FALSE | +
동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.
+ +OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.
| Column name | +Type | +Nullable | +
|---|---|---|
| OFFLINE_SALE_ID | +INTEGER | +FALSE | +
| PRODUCT_ID | +INTEGER | +FALSE | +
| SALES_AMOUNT | +INTEGER | +FALSE | +
| SALES_DATE | +DATE | +FALSE | +
동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.
+ +ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
예를 들어 ONLINE_SALE 테이블이 다음과 같고
| ONLINE_SALE_ID | +USER_ID | +PRODUCT_ID | +SALES_AMOUNT | +SALES_DATE | +
|---|---|---|---|---|
| 1 | +1 | +3 | +2 | +2022-02-25 | +
| 2 | +4 | +4 | +1 | +2022-03-01 | +
| 4 | +2 | +2 | +2 | +2022-03-02 | +
| 3 | +6 | +3 | +3 | +2022-03-02 | +
| 5 | +5 | +5 | +1 | +2022-03-03 | +
| 6 | +5 | +7 | +1 | +2022-04-06 | +
OFFLINE_SALE 테이블이 다음과 같다면
| OFFLINE_SALE_ID | +PRODUCT_ID | +SALES_AMOUNT | +SALES_DATE | +
|---|---|---|---|
| 1 | +1 | +2 | +2022-02-21 | +
| 4 | +1 | +2 | +2022-03-01 | +
| 3 | +3 | +3 | +2022-03-01 | +
| 2 | +4 | +1 | +2022-03-01 | +
| 5 | +2 | +1 | +2022-03-03 | +
| 6 | +2 | +1 | +2022-04-01 | +
각 테이블의 2022년 3월의 판매 데이터를 합쳐서, 정렬한 결과는 다음과 같아야 합니다.
+| SALES_DATE | +PRODUCT_ID | +USER_ID | +SALES_AMOUNT | +
|---|---|---|---|
| 2022-03-01 | +1 | +NULL | +2 | +
| 2022-03-01 | +3 | +NULL | +3 | +
| 2022-03-01 | +4 | +NULL | +1 | +
| 2022-03-01 | +4 | +4 | +1 | +
| 2022-03-02 | +2 | +2 | +2 | +
| 2022-03-02 | +3 | +6 | +3 | +
| 2022-03-03 | +2 | +NULL | +1 | +
| 2022-03-03 | +5 | +5 | +1 | +