[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (4)
2023. 8. 1. 18:30ㆍIT 라이프/패캠 데이터분석 부트캠프 9기
반응형
1. 실습
⌘ 처음 접하는 DB, 테이블의 info 파악하기
- 컬럼 구성 확인 : LIMIT 사용
- 테이블의 행 갯수 확인
- COUNT(*) : 행의 수. COUNT(ID)와 결과는 동일하지만 '행'을 알고 싶다면 * 쓰는게 의미적으로 맞음
- https://benant.wordpress.com/2010/07/25/sql에서-count-결과에-null이-포함될까/
- COUNT(*) : null 포함
- COUNT(컬럼명) : null 제외, 빈 문자열은 포함
- 빈 문자열도 제외하려면 빈 문자열 → null 후에 COUNT하면 됨
- ex) COUNT(IF (컬럼명='', null, 컬럼명))
- 빈 문자열도 제외하려면 빈 문자열 → null 후에 COUNT하면 됨
- COUNT(DISTINCT 컬럼명) : null 제외, 중복 제외
- 범주형 데이터의 카테고리가 뭐가 있는지 확인하고 싶을 때 DISTINCT 사용
- 컬럼값이 중복될 수 있을 거 같다고 생각하면 DISTINCT 사용
⌘ 에러 떠서 구글링하며 알게 된 부분
/*
다음처럼 작성했더니 에러났음
코드:
SELECT Name FROM city
WHERE Population = MIN(Population);
에러:
Error Code: 1111. Invalid use of group function
구글링: mysql where절 max invalid group function
답: https://yeonyeon.tistory.com/244
에러원인: 그룹함수(컬럼값들을 특정 기준으로 그룹화하고, 그룹별로 결과를 반환하는 함수)가 허용되지 않는 위치에서 그룹함수 사용
WHERE, GROUP BY절 등에서 그룹함수를 사용하면 에러가 발생한다고 함
해결방법: 그룹함수를 사용 가능한 위치에서 사용(서브쿼리 이용)
*/
SELECT Name FROM city
WHERE Population = (SELECT MIN(Population) FROM city);
⌘ 놓친 부분
- 값만 보면 그게 뭔지 알 수 없으니 보통 GROUP BY한 컬럼과 함께 출력
#SELECT MAX(Population)
SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode;
- 출력 순서를 바꿔주는 게 더 자연스러움
#SELECT SUM(Population), CountryCode
SELECT CountryCode, SUM(Population)
FROM city
GROUP BY CountryCode
정리
COUNT()의 인자에 따라 null 포함여부가 다르다는 사실을 구글링을 통해 알게 되었다.
이 부분에 대한 정확한 답변이 안된 것 같아서 구글링을 하게 된 것인데 역시 공부는 스스로 하는 거란 생각이 든다...
728x90
반응형
'IT 라이프 > 패캠 데이터분석 부트캠프 9기' 카테고리의 다른 글
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (6) (0) | 2023.08.03 |
---|---|
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (5)-postgreSql (0) | 2023.08.02 |
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (3) (0) | 2023.07.31 |
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (2) (0) | 2023.07.27 |
[데이터 분석 부트캠프] 데이터 분석가 필수 Tool SQL (1) (0) | 2023.07.26 |