Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

My sql query to get middle row values using GROUP BY function

Tags:

php

mysql

mysqli

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

like image 964
Dinesh Avatar asked Oct 06 '22 07:10

Dinesh


2 Answers

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

like image 151
Shiplu Mokaddim Avatar answered Oct 08 '22 04:10

Shiplu Mokaddim


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

like image 32
Vasil Nikolov Avatar answered Oct 08 '22 03:10

Vasil Nikolov