Почему я не могу получить правильные поля строк для этого запроса?

#mysql #sql

#mysql #sql

Вопрос:

  select  CountryCode,Language, floor(max(percentage)) as speakers 
  from countrylanguage 
  group by CountryCode;
  

Как интуитивно понятный, мне нужен язык, соответствующий максимальному проценту в таблице countrylanguage. Однако, похоже, это не работает. Что я должен изменить здесь, чтобы заставить его работать?
Дополнительная информация для вас:

 desc countrylanguage;
 ------------- --------------- ------ ----- --------- ------- 
| Field       | Type          | Null | Key | Default | Extra |
 ------------- --------------- ------ ----- --------- ------- 
| CountryCode | char(3)       | NO   | PRI |         |       |
| Language    | char(30)      | NO   | PRI |         |       |
| IsOfficial  | enum('T','F') | NO   |     | F       |       |
| Percentage  | float(4,1)    | NO   |     | 0.0     |       |
 ------------- --------------- ------ ----- --------- ------- 
  

Ответ №1:

   select  CountryCode, Language, floor(percentage) as speakers 
    from countrylanguage c
    where percentage = (select max(percentage) from countrylanguage c2 where c2.countrycode = c.countrycode group by c2.countrycode)
  

Комментарии:

1. Это хуже, чем мой ответ. Вы получаете мне несколько строк!

2. вам нужен максимальный процент для каждой страны?

3. Да, Akshet. Мне нужен максимальный процент для каждой страны вместе с правильным языком.