5

私のデータベース構造は次のようなものです

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の場合のように、中央の行が2つある場合の中央の行または最大価格値を持つ行で必要な出力です

4

2 に答える 2

3

それはいくつかのトリックで行うことができます。

SELECT id, 
       price, 
       code 
FROM   table1 
WHERE  id IN (SELECT Ceil(Avg(id)) AS `id` 
              FROM   table1 
              GROUP  BY code); 

SQLFiddle

于 2013-01-21T07:25:01.017 に答える
1
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

于 2013-01-21T07:47:52.877 に答える