Counting
The COUNT() aggregate functions counts and displays the total number of entries. For example, to count the total number of entries in the table, issue the command below.
select COUNT(*) from employee_data; +----------+ | COUNT(*) | +----------+ | 21 | +----------+ 1 row in set (0.00 sec)
As you have learnt, the * sign means "all data"
Now, let’s count the total number of employees who hold the "Programmer" title.
select COUNT(*) from employee_data where title = 'Programmer'; +----------+ | COUNT(*) | +----------+ | 4 | +----------+ 1 row in set (0.01 sec)
The GROUP BY clause allows us to group similar data. Thus, to list all unique titles in our table we can issue
select title from employee_data GROUP BY title; +----------------------------+ | title | +----------------------------+ | CEO | | Customer Service Manager | | Finance Manager | | Marketing Executive | | Multimedia Programmer | | Programmer | | Senior Marketing Executive | | Senior Programmer | | Senior Web Designer | | System Administrator | | Web Designer | +----------------------------+ 11 rows in set (0.01 sec)
You’ll notice that this is similar to the usage of DISTINCT, which we encountered in a previous session.
Okay, here is how you can count the number of employees with different titles.
select title, count(*) from employee_data GROUP BY title; +----------------------------+----------+ | title | count(*) | +----------------------------+----------+ | CEO | 1 | | Customer Service Manager | 1 | | Finance Manager | 1 | | Marketing Executive | 3 | | Multimedia Programmer | 3 | | Programmer | 4 | | Senior Marketing Executive | 1 | | Senior Programmer | 2 | | Senior Web Designer | 1 | | System Administrator | 2 | | Web Designer | 2 | +----------------------------+----------+ 11 rows in set (0.00 sec)
For the command above, MySQL first groups different titles and then executes count on each group.
Now, let’s find and list the number of employees holding different titles and sort them using ORDER BY.
select title, count(*) AS Number from employee_data GROUP BY title ORDER BY Number; +----------------------------+--------+ | title | Number | +----------------------------+--------+ | CEO | 1 | | Customer Service Manager | 1 | | Finance Manager | 1 | | Senior Marketing Executive | 1 | | Senior Web Designer | 1 | | Senior Programmer | 2 | | System Administrator | 2 | | Web Designer | 2 | | Marketing Executive | 3 | | Multimedia Programmer | 3 | | Programmer | 4 | +----------------------------+--------+ 11 rows in set (0.00 sec)
|
« Previous
|
Next »
|
The DISTINCT keyword In this section of the online MySQL guide, we will look at how to select and display records from MySQL tables using ...
HAVING clause To list the average salary of employees in different departments (titles), we use the GROUP BY clause, as in: select title, AVG(salary) from ...
IN and BETWEEN This section of the tutorial MySQL looks at the In and BETWEEN operators. To list employees who are Web Designers and System ...
Logical Operators In this section of the SQL primer we look at how to select data based on certain conditions presented through MySQL logical operators. ...
Pattern Matching with text data We will now learn at how to match text patterns using the where clause and the LIKE operator in this ...