Моя структура базы данных похожа на
Id Price Code 1 0.12 93 2 0.13 93 3 0.54 93 4 0.96 93 5 0.10 94 6 0.30 94 7 0.90 94 8 1.40 94 9 2.30 94
Мне нужно получить данные, используя группу по коду, и я хочу, чтобы средняя строка была выведена. В приведенном выше примере я хочу, чтобы
Id Price Code 3 0.54 93 7 0.90 94
Вышеупомянутый результат, который я хочу, с средней строкой или строкой, имеющей максимальное значение цены в случае двух средних строк, например, в случае количества строк 4,6,8
SELECT table1.* FROM table1 JOIN ( SELECT SUBSTRING_INDEX(SUBSTRING_INDEX( GROUP_CONCAT(id ORDER BY id ASC), ',', CEIL(COUNT(*) / 2) ), ',', -1) AS id FROM table1 GROUP BY CODE ) t USING(id)
Это можно сделать с помощью некоторых трюков.
SELECT id, price, code FROM table1 WHERE id IN (SELECT Ceil(Avg(id)) AS `id` FROM table1 GROUP BY code);
SQLFiddle