본문 바로가기

SQL

[SQL 문법] COUNT(*), COUNT(1), COUNT(column명)은 뭐가 다를까?

count의 다양한 활용에 대해 알아보겠습니다.

 

아래 사이트에서 실습을 진행했습니다.

www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

 

SQL Tryit Editor v1.6

WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, Opera, and Edge(79). If you use another browser you will still be able to use our Try SQL Editor, but a different ver

www.w3schools.com


count() 함수는 말 그대로 괄호 안 항목의 개수를 카운트합니다.

 

1. COUNT(*)

 

🔷 쿼리

 

SELECT COUNT(*) 
FROM Customers;

 

🔷 결과

 

위의 예시는 모든 것을 뜻하는 (*)을 이용해 COUNT했습니다.

즉, row 개수를 카운트하는 것과 마찬가지입니다.

 

 

2. COUNT(1)

 

🔷 쿼리

 

SELECT COUNT(1) 
FROM Customers;

 

🔷 결과

 

COUNT(1)은 COUNT(*)와 결과가 같습니다. 서버 내부 동작이 빠르게 작용한다는 이점이 있다고 합니다.

COUNT(1) = COUNT(*)!!!

 

3. COUNT(column명)

count(column명)은 위에서 이용했던 결과와 다릅니다.

null값을 포함하느냐 안하느냐의 차이가 있습니다.

column명을 지정해주면 null값을 제외한 row 개수를 반환합니다.

코드와 결과로 바로 알아보겠습니다.

 

 

🔷 쿼리

 

select count(*)
from order_details;

 

🔷 결과

 

 

🔷 쿼리

 

select count(purchase_order_id)
from order_details;

 

🔷 결과

 

 

count(*)일때와 count(purchase_order_id)일때 결과값이 다른 것을 확인할 수 있습니다. 

따라서 어떤 의도로 count를 쓰는지 정확히 파악한 후에 괄호안의 값을 지정해야합니다. 

 


정리

✍ COUNT(*) = COUNT(1)

✍ COUNT(*) - NULL 포함

✍ COUNT(column명) - NULL 제외