2016-10-14 4 views
1

мне нужно вернуться последней записи на MySQL Count Query, однако MySQL вернуться всегда первая записьMySQL Count + GroupBy & OrderBy и последней записи

table : author 
+--------+----------------------+-----------+----------------+ 
| aut_id | aut_name | country | home_city | 
+--------+----------------------+-----------+----------------+ 
| AUT001 | William Norton | UK | Cambridge | 
| AUT002 | William Maugham | Canada | Toronto | 
| AUT003 | William Anthony | UK | Leeds | 
| AUT004 | S.B.Swaminathan | India | Bangalore | 
| AUT005 | Thomas Morgan | Germany | Arnsberg | 
| AUT006 | Thomas Merton | USA | New York | 
| AUT007 | Piers Gibson | UK | London | 
| AUT008 | Nikolai Dewey | USA | Atlanta | 
| AUT009 | Marquis de Ellis | Brazil | Rio De Janerio | 
| AUT010 | Joseph Milton | USA | Houston | 
| AUT011 | John Betjeman Hunter | Australia | Sydney | 
| AUT012 | Evan Hayek | Canada | Vancouver | 
| AUT013 | E. Howard | Australia | Adelaide | 
| AUT014 | C. J. Wilde | UK | London | 
| AUT015 | Butler Andre | USA | Florida | 
+--------+----------------------+-----------+----------------+ 
SELECT country,COUNT(*) as total , aut_name 
FROM author 
GROUP BY country 
ORDER BY total desc; 
+-----------+----------+ 

Проблема в том, я получаю всегда первая запись в каждой стране , таких как Джон Betjeman Hunter на Говарда & так ..

НУЖЕН РЕЗУЛЬТАТ ПОЛУЧИТЬ

+-----------+----------+ 
    | country | COUNT(*) | aut_name 
    +-----------+----------+ 
    | UK | 4 | C. J. Wilde ------> Last Entry in UK 
    | USA | 4 | Butler Andre ------> Last Entry in USA 
    | Australia | 2 | E. Howard 
    | Canada | 2 | Evan Hayek 
    | Brazil | 1 | Marquis de Ellis 
    | Germany | 1 | Thomas Morgan 
    | India | 1 | S.B.Swaminathan 
    +-----------+----------+ 

ответ

4
SELECT t2.country, 
     t2.author_count, 
     t1.aut_name 
FROM author t1 
INNER JOIN 
(
    SELECT country, COUNT(*) AS author_count, MAX(aut_id) AS aut_id 
    FROM author 
    GROUP BY country 
) t2 
    ON t1.country = t2.country AND 
     t1.aut_id = t2.aut_id 
ORDER BY t2.author_count DESC 

Демо здесь:

SQLFiddle

+0

@Thor Спасибо за редактирование :-) –

+0

Спасибо Tim B, я был немного далек от того, что я делаю здесь .. – Krasic

Смежные вопросы