티스토리 뷰

SQL (코딩테스트 포함)

SQL Kit

jhk828 2020. 9. 25. 02:27

SQL - SELECT

1. 모든 레코드 조회하기

SELECT * FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

2. 역순 정렬하기

SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC

 

3. 아픈 동물 찾기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;

 

4. 어린 동물 찾기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

5. 동물의 아이디와 이름

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

6. 여러 기준으로 정렬하기

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;

 

7. 상위 n개 레코드

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;

 

MySQL은 limit을 걸어 추출한다.

-LIMIT 3,7 : 위에서 3부터 7까지의 정보 추출

-LIMIT 5: 위에서 5개의 정보 추출

 

SQL - SUM, MAX, MIN

1. 최댓값 구하기

SELECT MAX(DATETIME) AS '시간'
FROM ANIMAL_INS;

 

2. 최솟값 구하기

SELECT MIN(DATETIME) AS '시간'
FROM ANIMAL_INS;

 

3. 동물 수 구하기

SELECT COUNT(*)
FROM ANIMAL_INS;

 

4. 중복 제거하기

SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS
WHER NAME IS NOT NULL;

 

COUNT (DISTINCT NAME)

 

SQL - GROUP BY

1. 고양이와 개는 몇 마리 있을까

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) as count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE;

 

 

2. 동명 동물 수 찾기

- COUNT(*)은 NULL인 값도 포함하여 COUNT하기 때문에 오답이 나온다

SELECT NAME, COUNT(NAME) as 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT >= 2;

 

3. 입양 시각 구하기(1)

SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9
AND HOUR(DATETIME) <= 19
GROUP BY HOUR(DATETIME);

 

4. 입양 시각 구하기(2)

https://dev-mystory.tistory.com/82

변수 쓰는 풀이, union all 쓰는 풀이 둘 다 공부

SQL - IS NULL

 

SQL - JOIN

 

1. 없어진 기록 찾기

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_OUTS AS A LEFT JOIN ANIMAL_INS AS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID;

 

https://futurists.tistory.com/17

https://wakestand.tistory.com/29

 

2. 있었는데요 없었습니다

SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME
FROM ANIMAL_INS
LEFT JOIN ANIMAL_OUTS
ON ANIMAL_INS.ANIMAL_ID=ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.DATETIME>ANIMAL_OUTS.DATETIME
ORDER BY ANIMAL_INS.DATETIME;

https://dojinkimm.github.io/problem_solving/2019/09/17/sql5_2.html

 

3. 오랜 기간 보호한 동물(1)

SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS A
LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL
ORDER BY A.DATETIME
LIMIT 3;

 

4. 보호소에서 중성화한 동물

SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.ANIMAL_TYPE, ANIMAL_OUTS.NAME
FROM ANIMAL_OUTS
LEFT JOIN ANIMAL_INS
ON ANIMAL_OUTS.ANIMAL_ID=ANIMAL_INS.ANIMAL_ID
WHERE ANIMAL_INS.SEX_UPON_INTAKE
LIKE 'Intact%' AND (ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' OR ANIMAL_OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%');

 

https://dojinkimm.github.io/problem_solving/2019/09/17/sql6_2.html

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
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
글 보관함