반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Color
- inflearn
- DP
- 구현
- CSS
- Kotlin
- CleanCode
- 알고리즘
- 코딩테스트
- html
- 클린코드
- codecademy
- Spring
- Web
- algorithm
- SWEA
- java
- front-end
- SQL
- 검색트리
- 순환
- BFS
- javascript
- DFS
- 정렬
- android
- 프로그래머스
- 다이나믹 프로그래밍
- 자바
- 해슁
Archives
- Today
- Total
깡뇽
[프로그래머스] SQL High Score Kit - GROUP BY 본문
반응형
고양이와 개는 몇 마리 있을까
SELECT ANIMAL_TYPE, COUNT(*) AS count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE
GROUP BY : 컬럼에서 같은 것들끼리 묶기
동명 동물 수 찾기
#방법1
SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME
#방법2
SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME
#방법3
SELECT NAME, COUNT(*) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME
HAVING : 조건 걸기
+) WHERE은 개별 행에 적용되어서 해당 코드에서 WHERE을 사용하면 조건 적용이 되지 않는다.(그룹화나 집계가 발생한 후에 사용할 수 없기 때문에) 이럴 경우 HAVING을 사용하면 SELECT가 뽑아내는 결과 중에 해당 조건을 만족하는 행을 반환할 수 있다...! 또한 WHERE은 GROUP BY 앞에, HAVING은 GROUP BY 뒤에 사용할 수 있다.
입양 시각 구하기(1)
SELECT HOUR(DATETIME) AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT' FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) <= 19
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
입양 시각 구하기(2)
[시도1]
0시부터 23시까지 모두 출력해야 하는데 값이 없는 시간은 출력이 되지 않고 있다.
#솔루션
SET @HOUR = -1;
SELECT (@HOUR := @HOUR + 1) AS HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR ) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;
구글링을 통해 찾은 해답이다.
HOUR 변수에 -1을 할당한다. SELECT문을 활용해서 원하는 데이터를 추출할 때에 -1 + 1을 한 HOUR(변수) 즉, 0부터 시작해 시간 데이터를 가져올 수 있게 된다. 그리고 두 번째 컬럼에서는 COUNT의 컬럼명으로 ANIMAL_OUTS 테이블의 HOUR(DATETIME)이 HOUR 변수와 같은 것들의 개수를 세어 추출한다. HOUR 변수가 23보다 작은 때까지의 데이터를 추출해달라는 의미이다. 마지막의 WHERE @HOUR < 23이 없으면 0부터 99까지 추출된다.
:= : SET과 함께 사용될 때, 대입연산자
SET : 변수를 선언할 때에 사용하며, 새로운 변수에 값을 할당할 수 있다.
ex) 변수 할당 및 출력
``` SET @변수명 = 변수값;
SELECT @변수명; ```
반응형
'Computer Language > SQL' 카테고리의 다른 글
[프로그래머스] SQL High Score Kit - String, Data (0) | 2022.03.03 |
---|---|
[프로그래머스] SQL High Score Kit - JOIN (0) | 2022.03.03 |
[프로그래머스] SQL High Score Kit - IS NULL (0) | 2022.03.02 |
[프로그래머스] SQL High Score Kit - SUM, MAX, MIN (0) | 2022.02.28 |
[프로그래머스] SQL High Score Kit - SELECT (0) | 2022.02.28 |