I have a table of students:
id | age -------- 0 | 25 1 | 25 2 | 23
I want to query for all students, and an additional column that counts how many students are of the same age:
id | age | count ---------------- 0 | 25 | 2 1 | 25 | 2 2 | 23 | 1
What’s the most efficient way of doing this? I fear that a sub-query will be slow, and I’m wondering if there’s a better way. Is there?
Advertisement
Answer
This should work:
SELECT age, count(age) FROM Students GROUP by age
If you need the id as well you could include the above as a sub query like so:
SELECT S.id, S.age, C.cnt FROM Students S INNER JOIN (SELECT age, count(age) as cnt FROM Students GROUP BY age) C ON S.age = C.age