Как посчитать количество предметов в MySQL? - PullRequest
0 голосов
/ 01 июня 2011

Это лучше объяснить в примере.

У меня есть следующие данные в MySQL

   Name   address   age    
   John1   33 St    20    
   John2   22 St    21
   John3   44 St    20
   John4   55 St    21
   John6   44 St    20
   John5   66 St    35

Я хотел бы получить список строк с количеством в зависимости от возраста. Но можно ли связать последний ряд с каждым счетчиком? Пример

   Name   address   age   Count 
   John6   44 St    20      3
   John4   55 St    21      2
   John5   66 St    35      1

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Проверьте синтаксис для GROUP BY

SELECT *, count(*) as Count FROM tableName GROUP BY age;

UPDATE

Предположим, вы решили добавить столбец заказа, например, datetime:

   Name   address   age created   
   John1   33 St    20  2011-04-01 10:00:00
   John2   22 St    21  2011-04-01 09:00:03
   John3   44 St    20  2011-04-01 07:00:20
   John4   55 St    21  2011-04-01 08:45:01
   John6   44 St    20  2011-04-01 13:00:00
   John5   66 St    35  2011-04-01 12:00:40

Тогда вы могли бы достичь своей конечной цели следующим образом:

  SELECT *, count(*) as Count
    FROM ( SELECT * FROM tableName ORDER BY created DESC ) as newTable
GROUP BY age;

Вы должны использовать вложенный выбор, потому что в противном случае ORDER BY будет применяться после GROUP BY.

0 голосов
/ 01 июня 2011

Как указал Стивен, вам нужно сделать вложенный выбор, но наоборот:

SELECT 
    u.Name,u.Address, u.age, u.NumCount
FROM (SELECT Name, Address, age, count(age) from users group by age) as u
ORDER BY u.NumCount desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...