DLife Planet

[쿼리 공부] 중급 2 동명 동물 수 찾기 (Having vs With PLSQL) 본문

DataScience

[쿼리 공부] 중급 2 동명 동물 수 찾기 (Having vs With PLSQL)

Western_Gem 2020. 11. 19. 10:10
반응형

Group By를 사용하는 예제 1번입니다.


출처 - 프로그래머스

[해설] 

모든 프로그래머스 SQL 문제들은 테이블 명, 테이블 스키마(테이블의 구성), 쿼리 목표, 그리고 예시로 구성이 됩니다.

 

 

Having vs PLSQL 

 

Select 산출물에서 Having을 써서 값을 찾는 방식 vs With 임시 테이블 생성 

후자 쪽이 성능은 더 좋아 보입니다만... PLSQL 하... 어렵다.

 

with temp_table ( where 제외 요구조건)

select 테이블 count


[정답]

전 세계 99%의(제 뇌피셜이지만 거의 모두 동의하는 부분) RDBMS SQL문법은 Oracle 아니면 Mysql로 정리가 됩니다. (SQL Server혹은 임베디드 SQL의 문법이 나머지 1%라고 봅니다. 사실상 많이들 안 쓰죠... 물론 어디까지나 제 뇌피셜입니다. 제 주장을 반박하시거나 동의하시는 고인이 있으시다면 댓글로 달아주세요. 전 컴공 전공자가 아닙니다. 하지만, 김풍 형도 냉부해에서 요리 지식 자랑하잖아요 ㅋㅋ)

 

(Mysql/Oracle) 문법 정답

SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME;

 

WITH TEMP_TABLE AS (SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
ORDER BY NAME)
SELECT * FROM TEMP_TABLE
WHERE COUNT > 1

 


[SQL Insight]

임시테이블 생성이 처리 측면에서 더 빠르다. 그러나 Having이 좀 더 간단하다.

Having 없는 쿼리는 양심상 제가 짠건 아니라고 고백할게요. 근데 이해하는데 좀 걸리네요.

성능 개선을 하는 PLSQL에 익숙해지자. 어디가서 중수라고 말 못하겠네요. 어렵다.

 

반응형
Comments