У меня есть таблица с наиболее распространенными цветами в изображениях. Это выглядит примерно так:Значения в том же ряду группового максимума
file | color | count
---------------------
1 | ffefad | 166
1 | 443834 | 84
2 | 74758a | 3874
2 | abcdef | 228
2 | 876543 | 498
3 | 543432 | 3382
3 | abcdef | 483
Я пытаюсь получить наиболее общий цвет для каждого изображения. Поэтому я хочу, чтобы мой результат будет:
file | color | count
---------------------
1 | ffefad | 166
2 | 74758a | 3874
3 | 543432 | 3382
Так что моя проблема, кажется, что мне нужно GROUP BY в file
колонке, но MAX() для count
колонки. Но просто
SELECT h.file, h.color, MAX(h.count) FROM histogram GROUP BY h.file
не работает, потому что он неопределен, поэтому результат цвета не будет соответствовать строке из результата подсчета.
SELECT h.file, h.color, MAX(h.count) FROM histogram GROUP BY h.file, h.color
исправляет определенность, но теперь каждая строка является «уникальной», и все строки возвращаются.
Я не могу понять способ сделать подзапрос или присоединиться, поскольку единственные «правильные» значения, которые я могу вычислить для получения, файла и подсчета, сами по себе не отличаются.
Возможно, мне нужна более простая схема? Это «мой» стол, поэтому я могу изменить это, если нужно.
Вы должны подождать, прежде чем принимать ответ; @Twelfth работает в 2 - 3 раза быстрее, чем AgRizzo. См. Http://sqlfiddle.com/#!2/82203/8 –