【问题标题】:SQL for Middle Value Rather than MIN/MAX or FIRST/LAST用于中间值而不是 MIN/MAX 或 FIRST/LAST 的 SQL
【发布时间】:2015-10-02 13:01:40
【问题描述】:

有没有返回三的中间值的SQL函数?

例如,假设我有一张桌子,里面有三辆汽车,按 AutoMaker 的字母顺序排序。

John: Ford
John: Honda
John: VW

然后

MIN(AutoMaker) returns Ford.
MAX(AutoMaker) returns VW.

有没有类似的返回 Honda 的 SQL 函数?

我正在使用 MS Access 和 Oracle。

谢谢。

【问题讨论】:

  • 查看 Oracle 中的 row_number。但是,如果人们拥有超过 3 辆汽车,结果会怎样?要列出所有不是minmax 的结果吗?
  • 选择哪里不是最大和哪里不是最小...
  • 您的意思是MEDIAN 值?
  • 我不是指中值。这些是文本字段。
  • 是的,所有不是最小值和最大值的结果。

标签: sql ms-access


【解决方案1】:

简短回答:不。它太具体了。

更长的答案:它太具体了。因此,您所说的“中间”实际上是第二条记录。但是如果你有 5 条记录,那就是第三条,以此类推。如果您在实践中需要,只需为每一行分配一个行号(OracleAccess),然后选择((n + 1)/ 2)nd行(WHERE row_number =(n + 1)/ 2 )。

PS - 如果你有 4 行,那是中间行? :)

【讨论】:

  • 此数据并非恰好有 4 行。我只有三个,我需要得到中间的。
【解决方案2】:

查询可能是这样的

select row_id, Field1   
FROM tbl 
where row_id  = (select cInt(count(Field1)/2) from tbl)

访问中的问题是您没有row_number,您需要将row_id添加到表中,然后填充row_id 1,2,3,4(在Field1上排序)

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 2021-02-03
    • 2014-08-21
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2019-12-24
    • 2012-07-10
    • 1970-01-01
    相关资源
    最近更新 更多