SQl sprint
- Table 관계도
COUNT (*)
Q. duRiCha가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.
SELECT COUNT(*) AS ContentCount //COUNT(content.id) 통과O FROM content INNER JOIN user ON user.id = content.userId WHERE name = 'duRiCha
COUNT (content.id)
Q. 각 user(컬럼명: name)가 작성한 글의 개수 (컬럼명: ContentCount)를 출력하기 위한 SQL을 작성해주세요.
SELECT user.name AS name, COUNT(content.id) AS ContentCount //COUNT(*) 통과X FROM user LEFT JOIN content ON user.id = content.userId GROUP BY user.name
COUNT 함수
COUNT 함수는 테이블에 컬럼의 데이터 개수를 셀 때 사용을 하는데
NULL인 데이터는 제외하고 계산하기 때문에 전체 행 갯수를 가져올 때는 컬럼 대신에 (*)를 사용해야 한다
LEFT JOIN은 null값이 생기게 되는데 null값을 제외하고 개수를 셀때
- 포함되는 경우 : COUNT(*)
- COUNT(*)를 사용하면 NULL도 포함하여 전부 COUNT 합니다.
전체 행 개수 가져올때 SELECT COUNT(*) FROM TableName;
- 포함되지 않는 경우: COUNT(ColumnName)
- COUNT(컬럼명)을 사용하면 NULL 값은 제외하고 COUNT 합니다.
컬럼 데이터 개수 가져올 때 SELECT COUNT(ColumnName) FROM TableName;
위에 두 문제를 풀면서 첫번째 문제는 (*) 로 모든 컬럼을 세는데 test를 통과했는데
밑의 문제는 (ColumnName) 으로 작성을 해야 통과가 되었다
아직 차이점에 관해 미흡한거 같아 검색으로 내용들을 찾아 보았다.
COUNT
함수와 distinct
를 같이 사용하면 활용도가 높다고 하는데 이 부분은 추후에 공부해봐야겠다.