当前位置: 首页 > 面试题库 >

分组依据检索3个值

萧玮
2023-03-14
问题内容

我有以下查询

SELECT  Cod ,
        MIN(Id) AS id_Min,
        MAX(Id) AS id_Max,
        -- retrieve value in the middle,
        COUNT(*) AS Tot

FROM    Table a ( NOLOCK )        
GROUP BY Cod
HAVING  COUNT(*)=3

我怎样才能像我对min和max所做的那样检索min和max之间的值?

例子

Cod      |  Id

Stack       10
Stack       15
Stack       11
Overflow    100
Overflow    120
Overflow    15

要求的输出

Cod         | Min   | Value_In_The_Middle  |    Max

Stack         10          11                    15
Overflow      15          100                   120

问题答案:

我还没有测试过,但我认为这可以工作

SELECT  Cod ,
        MIN(Id) AS id__Min,
        MAX(Id) AS id_Max,
        SUM(ID)-MAX(Id)-MIN(Id) as id_Middle,
        COUNT(*) AS Tot
FROM    Table a ( NOLOCK )        
GROUP BY Cod
HAVING  COUNT(*)=3

仅当您具有3个值并且SUM()不会溢出时(如BogdanSahlean在注释中指出),此技巧才起作用。



 类似资料:
  • 我可以搜索正常的查询。包含来自elasticsearch uri search的字段值或排序,但无法运行uri search的术语聚合查询。 我怎么能做到这一点? 术语聚合查询是: curl-u-elastic-XGET'127.0.0.1:9200/indexname/typename/\u搜索?pretty'-d'{“size”:0,aggs:{“groupu by_field”:{“term

  • 问题内容: 我需要在ES中使用3个字段进行汇总(分组)。 我可以在1个查询中执行此操作,还是需要对每列使用facet +迭代? 谢谢 问题答案: 您可以通过2种方式来做到这一点: 1)在一个方面中使用多个字段: 单个字段facet的示例: 单面结果中多个字段的示例: 2)使用多方面结果集: 参考链接:http : //www.elasticsearch.org/guide/reference/ap

  • 问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚

  • 此实例中的任务是获取数据库中每个作者的最新文章。 示例查询产生不可用的结果,因为它并不总是返回的最新消息。 目前公认的答案是 编辑:这个问题是另一个问题的延续,我的具体情况略有不同。您可以(也应该)假设还有一个wp_posts.id是该特定帖子的唯一标识符。

  • 问题内容: 我有这种一级树情况: json在哪里: 问题在于,这会与孩子一起创建optgroup,但也会重复其根: 我想生产: 问题答案: 如果您将json更改为以下内容,则分组将无法完全实现: 然后,您将按照想要的方式进行分组 jsFiddle:http : //jsfiddle.net/rtCP3/182/

  • 问题内容: 我希望能够从电子邮件表中选择一堆行并按发件人分组。我的查询如下所示: 该查询几乎可以按我希望的方式工作-它选择按电子邮件分组的记录。问题在于主题和时间戳记与特定电子邮件地址的最新记录不符。 例如,它可能返回: 当数据库中的记录是: 如果“编程问题”主题是最新的,那么在对电子邮件进行分组时如何使MySQL选择该记录? 问题答案: 一个简单的解决方案是将查询包裹与ORDER语句子选择 第一