Как получить значение поля базы максимальной даты в выражении group by в MySQL?

0

У меня есть таблица с этими данными:

| name | type | score |
+------+------+-------+
|  a   |   1  |  15   |
+------+------+-------+
|  b   |   2  |  12   |
+------+------+-------+
|  c   |   1  |  17   |
+------+------+-------+

Теперь я должен создать запрос, чтобы получить количество каждого типа и имя студента, которые получают максимальный балл. Это мой запрос:

select name , count(*) as count ,score ,type 
group by type

и результат:

| name | type | score |  count |
+------+------+-------+--------+
|  a   |   1  |  15   |   2    |
+------+------+-------+--------+
|  b   |   2  |  12   |   1    |
+------+------+-------+--------+

но я ожидаю этого результата:

| name | type | score |  count |
+------+------+-------+--------+
|  c   |   1  |  17   |   2    |
+------+------+-------+--------+
|  b   |   2  |  12   |   1    |
+------+------+-------+--------+
  • 0
    Почему не c 1 17 ?
  • 0
    это была моя ошибка в наборе вопроса. Я исправляю это ...
Теги:

1 ответ

1
Лучший ответ
SELECT x.*
     , y.total 
  FROM my_table x 
  JOIN 
     ( SELECT type
            , MAX(score) score
            , COUNT(1) total 
         FROM my_table 
        GROUP 
           BY type
     ) y 
    ON y.type = x.type 
   AND y.score = x.score;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню