FAQ: Aggregate Functions - Having


This community-built FAQ covers the “Having” exercise from the lesson “Aggregate Functions”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development
Data Science

Learn SQL

FAQs on the exercise Having

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!


How come we use * with clause COUNT to count number of apps at each price point. I thought we need to use COUNT(id ) or COUNT(name)? Don’t we use * to include everything? Thank you


I had a similar questions. I am not understanding why HAVING COUNT(*) > 10… Infact I used HAVING COUNT(price) > 10 and the task was checked off as if done correctly. It was not until I looked at the hint that I realized I had done the query ‘wrong’ (even though the task was ‘completed’ when I used HAVING COUNT(price) > 10)


Same here. Would still love an answer if anyone has it?


The difference between the COUNT (*) function and COUNT (column name | expression) is that the second one (like the other aggregate functions) does not take into account NULL values ​​in the calculation.


I had this same question, after coming here and not finding an answer I played around with the code a bit and it helped me understand more.

Anyone else having this same issue I’d recommend running the code with just

SELECT price, ROUND(AVG(downloads)), COUNT (*)
FROM fake_apps;

and seeing what the “count” function is doing.

So when you run

SELECT price, 
FROM fake_apps
GROUP BY price

Basically you’re saying, select these rows and count them, then group them by price, for the ones that have more than 10 rows in their group.

Sorry I can’t put it more succinctly lol but that’s what helped me!


Why can’t we use where clause instead of having? in the example given, we can clearly get the condition by usnig where count(*) > 10;


Having is specifically for aggregate functions. Where, WHERE is for data points in just a regular old query