Группировать по именованному столбцу - PullRequest
1 голос
/ 09 ноября 2009

Я всегда забываю, как делать такие вещи.

У меня есть таблица базы данных с датами рождения, и я хочу узнать, сколько людей одного возраста.

Я пытаюсь:

SELECT TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ) AS age, COUNT( age ) 
FROM  person 
GROUP BY age

но получите ошибку

Неизвестный столбец 'age' в 'списке полей'

Как я могу создать группу в именованном столбце?

Ответы [ 2 ]

6 голосов
/ 09 ноября 2009

Псевдонимы нельзя использовать в предложениях group by, равно как их нельзя использовать в других столбцах списка выбора (да, это отстой).

SELECT TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ) AS age, COUNT( TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ))
FROM  person
GROUP BY TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) )
0 голосов
/ 09 ноября 2009

Неважно, я понял.

Хорошо, мне нужно использовать COUNT(*)

SELECT TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ) AS age, COUNT( * ) 
FROM  person 
GROUP BY age
...