My database structure is like
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
I have to fetch the data using group by code and i want the middle row as output. In the above example i want the output as
Id Price Code
3 0.54 93
7 0.90 94
The above is the output that i want with the middle row or the row having maximum price value in case of two middle rows like in case of row count 4,6,8
It can be done by some tricks.
SELECT id,
price,
code
FROM table1
WHERE id IN (SELECT Ceil(Avg(id)) AS `id`
FROM table1
GROUP BY code);
SQLFiddle
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)
http://sqlfiddle.com/#!2/fdc22/14
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With