일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- python3
- 한국의 새
- 비둘기목
- 비둘기과
- 한국의새
- 오리과
- 딱다구리과
- 가마우지과
- 직박구리과
- django
- 맑은소리 스피치학원
- AI전략게임
- structured_array
- 참새목
- 딥러닝공부
- 기러기목
- 계수정렬
- SimpleCraft
- 백로과
- ADsP
- 생일문제
- Birthday paradox
- Python
- 흰날개해오라기
- IBK기업은행 인턴
- 딥러닝 공부
- 참새과
- keras
- 솔딱새과
- AI역량평가
- Today
- Total
진박사의 일상
[TIL] 2021.07.16 - SQL 복습 본문
프로그래머스 코테 연습
MySQL - SELECT
-모두 출력
SELECT * FROM ANIMAL_INS
-역순 정렬
SELECT NAME, DATETIME from ANIMAL_INS order by ANIMAL_ID DESC
-조건부 검색 (아픈 동물, 어린 동물)
SELECT ANIMAL_ID, NAME from ANIMAL_INS where INTAKE_CONDITION = 'Sick'
SELECT ANIMAL_ID, NAME from ANIMAL_INS where INTAKE_CONDITION != 'Aged'
-정렬
SELECT ANIMAL_ID, NAME from ANIMAL_INS order by ANIMAL_ID
-여러 기준으로 정렬
SELECT ANIMAL_ID, NAME, DATETIME from ANIMAL_INS order by NAME, DATETIME DESC
-상위 N개
-SELECT NAME from ANIMAL_INS order by DATETIME limit 1
-MAX
SELECT max(DATETIME) from ANIMAL_INS
-MIN
SELECT min(DATETIME) from ANIMAL_INS
-COUNT
SELECT count(*) from ANIMAL_INS
-중복제거 COUNT
SELECT count(distinct NAME) from ANIMAL_INS
-GROUP BY
SELECT ANIMAL_TYPE, count(*) from ANIMAL_INS group by ANIMAL_TYPE order by ANIMAL_TYPE
-HAVING (Group by의 조건절)
SELECT NAME, count(*) from ANIMAL_INS group by NAME having count(NAME) > 1 order by NAME
-GROUP BY - 응용 : round, date_format, as 함수
SELECT round(date_format(DATETIME, '%H')) as HOUR, count(*)
from ANIMAL_OUTS
group by HOUR
having HOUR >= 9 and HOUR <= 20
order by HOUR
프로그래머스 SQL 복습(2)
-IS NULL
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL
-IS NOT NULL
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC
-NULL 처리
SELECT ANIMAL_TYPE, ifnull(NAME, 'No name'), SEX_UPON_INTAKE from ANIMAL_INS
-없어진 기록 찾기(1) - subquery 사용
SELECT ANIMAL_ID, NAME
from ANIMAL_OUTS
where ANIMAL_ID not in (SELECT ANIMAL_ID from ANIMAL_INS);
-없어진 기록 찾기(2) - left join
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
from ANIMAL_OUTS
left join ANIMAL_INS
using(ANIMAL_ID) -- on ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID 대체 가능
where ANIMAL_INS.ANIMAL_ID is NULL
-있었는데요 없었습니다.(모순된 데이터 찾기) - right join
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
from ANIMAL_OUTS
right join ANIMAL_INS
using(ANIMAL_ID)
where ANIMAL_INS.DATETIME > ANIMAL_OUTS.DATETIME
order by ANIMAL_INS.DATETIME ASC
-오랜기간 보호한 동물(1) - join, on
SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
from ANIMAL_INS
left join ANIMAL_OUTS
using(ANIMAL_ID)
where ANIMAL_OUTS.ANIMAL_ID is NULL
order by ANIMAL_INS.DATETIME
limit 3
-보호소에서 중성화한 동물
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.ANIMAL_TYPE, ANIMAL_OUTS.NAME
from ANIMAL_INS
left join ANIMAL_OUTS
using(ANIMAL_ID)
where ANIMAL_OUTS.ANIMAL_ID is not NULL and SEX_UPON_INTAKE <> SEX_UPON_OUTCOME
SQL 문법 안 써본지가 상당히 되서 그런지 저런 간단한 것들도 상당히 애를 먹고 있다. 다시 감을 잡아야 할듯!
처음으로 TIL을 시도해보는 중... 어떻게 할지도 뭘 할지도 잘 모르겠지만 앞으로 꾸준히 하다보면 가닥을 잡을 수 있겠지?
'프로그래밍 > 코딩테스트 공부' 카테고리의 다른 글
[이코테] Greedy 문제 - 5. 볼링공 고르기 (0) | 2021.09.06 |
---|---|
[이코테] Greedy 문제 - 4. 만들 수 없는 금액 (0) | 2021.09.05 |
[이코테] Greedy 문제 - 3. 문자열 뒤집기 (0) | 2021.09.05 |
[이코테] Greedy 문제 - 2. 곱하기 혹은 더하기 (0) | 2021.09.05 |
[이코테] Greedy 문제 - 1. 모험가 길드 (0) | 2021.09.05 |