【问题标题】:My sql query to get middle row values using GROUP BY function我的 sql 查询使用 GROUP BY 函数获取中间行值
【发布时间】:2013-01-21 07:14:46
【问题描述】:

我的数据库结构是这样的

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 的情况

【问题讨论】:

  • 每个code 值的中间行?

标签: php mysql mysqli


【解决方案1】:

这可以通过一些技巧来完成。

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

SQLFiddle

【讨论】:

    【解决方案2】:
    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

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      相关资源
      最近更新 更多