A combination of COUNT and DISTINCT is used in SQL if one wants to get a count of the number of rows in a table, counting unique entries only.
SELECT COUNT(DISTINCT column) FROM table;
This statement would count all the unique entries of the attribute column in the table. DISTINCT ensures that repeated entries are only counted once.
Consider the following table, employees, created as follows:
CREATE TABLE employees(emp_id int,emp_name varchar(20),dept varchar(20),age int);INSERT INTO employees(emp_id,emp_name,dept,age)VALUES(1, "John", "Intern",25);INSERT INTO employees(emp_id,emp_name,dept,age)VALUES(2, "David", "Intern",30);INSERT INTO employees(emp_id,emp_name,dept,age)VALUES(3, "Mike", "Engineer",29);INSERT INTO employees(emp_id,emp_name,dept,age)VALUES(4, "Alex", "HR",27);
| id | name | dept | age |
|---|---|---|---|
| 1 | John | Intern | 25 |
| 2 | David | Intern | 30 |
| 3 | Mike | Engineer | 29 |
| 4 | Alex | HR | 27 |
SELECT COUNT(DISTINCT dept) from employees
This SQL command counts all distinct department names from the employee’s table.
The SQL command returns 3 since there is 3 unique dept. There are two employees who are Intern, therefore the DISTINCT clause only counts them as one. The other two dept: Engineer and HR are unique, so they are each counted once as well - giving a total of 3.
Free Resources