티스토리 뷰
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
댓글