SQL Aggregate Functions – How to Group By in MySQL and PostgreSQL

Ask questions Research chat →

https://www.freecodecamp.org/news/sql-aggregate-functions-how-to-group-by-in-mysql-and-postgresql/ · scraped

databases

Attachments

Scraped Content

— 1106 words · 2026-02-14 17:44:10 UTC ·

Excerpt

In SQL, aggregate functions let you perform a calculation on multiple data and return a single value. That’s why they are called “aggregate” functions. Those aggregate functions are AVG(), COUNT(), SUM(), MIN(), and MAX(). While making queries with the aggregate functions, you can also use them in combination with the GROUP BY clause and HAVING statement in any relational database – MySQL PostgreSQL, and others. In this article, you will learn how to use aggregate functions on their own and with the GROUP BY clause and HAVING statement. ## What We'll Cover - Conclusion ADVERTISEMENT ## How to Use Aggregate Functions To show you how the aggregate functions work, I’ll be working with an employees table in an employees_data database. Running SELECT * FROM employees got me the following: ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/7582a38d-3c97-42ac-b98b-83086c1c57d4/ss1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNS
In SQL, aggregate functions let you perform a calculation on multiple data and return a single value. That’s why they are called “aggregate” functions. Those aggregate functions are AVG(), COUNT(), SUM(), MIN(), and MAX(). While making queries with the aggregate functions, you can also use them in combination with the GROUP BY clause and HAVING statement in any relational database – MySQL PostgreSQL, and others. In this article, you will learn how to use aggregate functions on their own and with the GROUP BY clause and HAVING statement. ## What We'll Cover - Conclusion ADVERTISEMENT ## How to Use Aggregate Functions To show you how the aggregate functions work, I’ll be working with an employees table in an employees_data database. Running SELECT * FROM employees got me the following: ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/7582a38d-3c97-42ac-b98b-83086c1c57d4/ss1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=4f8e9a545c053befa2785ca2768b82b3bd2119b35b2c016edfdb315a6f6d4cb1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ## Syntax of Aggregate Functions The syntax for working with aggregate functions looks like this: ```plain text aggregate_function(MODIFIER | expression) ``` - the aggregate function could be AVG, COUNT, MAX, MIN, or SUM - the modifier could be all the values or the values in a particular column This syntax would make more sense in practice, so let’s get to use it with the aggregate functions. ## How to Use the AVG() Aggregate Function The AVG() aggregate function gets the total number of data and calculates their average. I was able to get the average wage paid to the employees this way: ```plain text SELECT AVG(wage) FROM employees ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/ff713550-3cf0-4aab-8732-ff5c3b453cac/ss2.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=ddb0c00a5a458ace890afbd280c451369ec562fc004247b9d4bda654082c7691&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) The query below gets the average wage of junior developers: ```plain text SELECT AVG(wage) FROM employees WHERE role = "Junior dev" ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/59a44dee-7fee-43eb-b05e-969e7475ae94/ss3.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=ef1d3a7635dff387aac57839205f2a3091d07bbf8922988cbb4b23a2bfbe6b3f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ADVERTISEMENT ### How to use the AVG() Function with GROUP BY and HAVING You can get the average number of entries (rows) in a particular column with the GROUP BY clause and HAVING statement. This means you have to combine those two with AVG(). For instance, I was able to get the average wage paid to employees in each row with this query: ```plain text SELECT role, AVG(wage) FROM employees GROUP BY role ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/aa6592eb-e870-4dc6-9e11-56d8eb8639e8/ss4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=51abaea102e2dd8c51b73c2bc35b43ccefb5ad7052348255201ba279535ed1ee&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) I was also able to get the average wage of senior developers by using the HAVING statement: ```plain text SELECT role, AVG(wage) FROM employees GROUP BY role HAVING role = "Senior dev" ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/c9725af1-bbad-419b-851f-df4dacd07882/ss5.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=b7b50e8ef72a9b5c015d71145eeb035e0d31c0f5c7a357c5f30c3667c887a1bc&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ## How to Use the COUNT() Aggregate Function COUNT() returns the number of rows in a table based on the condition (or filter) you apply. For example, to get the total number of rows, I ran the query below: ```plain text SELECT COUNT(*) FROM employees ``` And I got 20: ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/030ddb9b-1786-450b-b42f-1a53cb26a225/ss6.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=2ec5ec6592ba81685645bd49a24a0d604b2df83fde03c060c3eab9706fbec11b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) To get the total number of employees from the USA, I ran the query below: ```plain text SELECT COUNT(*) FROM employees WHERE country = "USA" ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/be168d11-1a4d-44c1-9588-2ec96f193153/ss7.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=465b97e4783f3f5882a7307db8b7ed144a83f4b57324527943f88d7c65845b1c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) And to get the employees who are technical writers, I did this: ```plain text SELECT COUNT(*) FROM employees WHERE role = "Tech Writer" ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/cb237467-2ad4-495f-a88b-8496a6156907/ss8.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=0db9323a5446e3b8cf4143f0dc64259086a0a1d3fd4bc99abec4c4829263e075&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ### How to Use COUNT() with GROUP BY and HAVING In a large database, you can use the GROUP BY clause and HAVING statement in combination with COUNT() to get the total number of entries (rows) in a particular column. In the database I’m using in this article, I was able to get the total number of employees in each row with the GROUP BY clause: ```plain text SELECT role, COUNT(*) FROM employees GROUP BY role ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/7fc80f20-c098-4712-bddf-2ebeb85ccb79/ss9.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=01cdd21609d147a3af60f7afe20cd1bdf4042a50867ded4cf0d76f831cd495ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) To get the number of only the employees that are senior developers, I attached HAVING role = "Senior dev" to the query: ```plain text SELECT role, COUNT(*) FROM employees GROUP BY role HAVING role = "Senior dev" ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/1dd3234e-d88f-4cff-aea7-33b0ac4e754a/ss10.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=3f52022d548011b05a4e4688c40673ee8f92a99b9a01642278804bb81f0564a2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ADVERTISEMENT ## How to Use the MAX() Aggregate Function The MAX() function returns the maximum value within non-NULL values. This means it would ignore fields that are empty and return the highest value within those that are not empty. For example, to get the highest wage in the employees table, I used the MAX() function like this: ```plain text SELECT MAX(wage) FROM employees ``` To get the maximum wage for mid-level developers, I used the WHERE statement: ```plain text SELECT MAX(wage) FROM employees WHERE role = "Mid level dev" ``` ### How to Use MAX() with GROUP BY and HAVING To get the maximum wage in each role, the GROUP BY clause comes in handy: ```plain text SELECT role, MAX(wage) FROM employees GROUP BY role ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/c75f7b7d-c3b7-4f01-b7d1-645d155d95dc/ss13.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=0e1da9ba2806751b59063ce197808a870b132985b8209cd21f336fee8ccbb1c3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) And to get the maximum wage in a particular role, combining the HAVING statement with the GROUP BY clause gets it done: ```plain text SELECT role, MAX(wage) FROM employees GROUP BY role HAVING role = "Tech writer" ``` ## How to Use the MIN() Aggregate Function The MIN() function is the opposite of the MAX() function – it returns the minimum value within non-NULL values. For example, I got the lowest wage on the employees table this way: ```plain text SELECT MIN(wage) FROM employees ``` ADVERTISEMENT ### How to Use MIN() with GROUP BY and HAVING Again, to get the minimum wage in each role, the GROUP BY clause can get it done: ```plain text SELECT role, MIN(wage) FROM employees GROUP BY role ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/8f0fa627-abf6-4031-9311-32c7537f7c5e/ss16.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=9d48dc11798a7dab32fa845abf890e7e515362d02a705b162dd553a55cc07940&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) And to get the minimum wage of a particular role, the HAVING statement and GROUP BY clause are what to use: ```plain text SELECT role, MIN(wage) FROM employees GROUP BY role HAVING role = "Junior dev" ``` ## How to Use the SUM() Aggregate Function The SUM() aggregate function adds the number of entries in a column based on the filter applied. The query below gets the total number of wages paid to employees: ```plain text SELECT SUM(wage) FROM employees ``` ### How to Use SUM() with GROUP BY and HAVING To get the sum of the total wages paid for employees in each role, I selected the role, used SUM() on the wages, and grouped them by the role: ```plain text SELECT role, SUM(wage) FROM employees GROUP BY role ``` ![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/bc393970-c8fb-443b-a62c-95e537c30616/ss19.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VV2MXCYX%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T174410Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIAgmhM%2BO9BsRlLwPNJzvWYltwLS5Tol%2FLoarhvokvkf%2FAiBEx38j7Aqm8oq7eki9V8gbKsJz81da%2F6wbAax9awXVgir%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMBLhZrxnNFaR4YE8uKtwDhfduFtrvut3B0IPBqItYMoPWC5mwucUGAOvEH2AMRvLx9GWrN%2FY9B8RSVPhveNshUIeLorhSWtc48DO%2BZ%2F2mw%2F1M10Lj6s%2F%2BSO37aZf%2BSeuAR8ctHDpQ47WFV6%2Fy%2FtqVETPIaomnIRoO%2BcqQ3UHf9NCFHKGohlAIUxpNQGganrniRHSSSNH8IJP%2BxgH3uvM0i%2FhL7pV%2FsYwM%2Bnq8YqmVUo%2BZ%2FFPPIoYFRNCtIhLYF%2BkWOuuXkUasl9oxmlCM6eJ9ahqlzCTJ6E2t1ACtUOAIvWdSt6%2BvVrSx5GZqzsJ4%2BigK7Kd5Jx65pvLp%2BsmkWT1WY%2BfK6W0q22qkrkLrGO8RREE4ZOOuNW7fIYtJpSlXyE%2BOQ3mPmAI4PptuLvQQ9q9q8yQ1Ln7dy2FrMpAlKNLsMq8Ri4IUfMEV6mlLMXG08PNnoFPLfL0xUKAfuYypAgUq9UENy67SyjW%2FbdC%2BiHGaSc0LZ9BhCzvwEyj9oKDLutjUjrR1XCAx9JlJN2HxLyRzHFyB4PkEIo5vsmkFeD%2Fdbcgf5Zz9PZ0q4LeoIpAb9Yg5oOdMAc3iIiyKVLJA3%2BrkzSni9OTAZKbckApdILbByopIoBS8KmNFj8nrxXpQQ%2FbfYeDgRKTNJ3LOv1AwyNHCzAY6pgFHNxz20IDuYsAHKla5WgOj11GMrnmT1IO2cRAYslnkJVR%2FTafuRe2sJSbOi%2Fn0gkzV%2BxXyBkJWg2ZAnkWum7oyw43UZbiTwbZiwk57FpgGRDqhGLYSXMJ5Ta2qdvoz8Bk52bF98D7PfMtjmgzCggrKA5ZiOk65trqjxApFq86xsr1spkHB6w9JH0HYtxgohsq01Bla63u8HGCT9ZJQL4rjJ%2Bee4vSO&X-Amz-Signature=a5aa0058e2aad0d1802184e95cda4ce12861466a56e4f38637a1743ad592f1b6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) To get the total wages paid to technical writers only, I used the HAVING statement: ```plain text SELECT role, SUM(wage) FROM employees GROUP BY role HAVING role = "Tech Writer" ``` ADVERTISEMENT ## Conclusion This article took you through what aggregate functions are in SQL, their syntax, and how to use them. In addition, you also learned how to use aggregate functions with the GROUP BY clause, HAVING, and WHERE statements. If you want to learn how the HAVING statement works, you should read this article I wrote on it. Thank you for reading. If you read this far, tweet to the author to show them you care. Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started ADVERTISEMENT

Visibility

Visible to everyone

Reading Status

Related Bookmarks

My Note


Saved!

Annotations

Export as Markdown
+ Annotate selection

Add Annotation