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

如何在SQL中找到中位数

拓拔坚
2023-03-14
问题内容

我有以下sql查询,该查询提供了按月,周和日分组的总h_time。相反,我想要月,周和日的h_time中位数。如何在Oracle SQL中做到这一点?

 SELECT DAY,

MEDIAN(H_TIME) AS HANDLE_TIME

FROM(
    select 
MONTH, WEEK, DAY,

    CASE 
        WHEN C.JOINED IS NOT NULL
            THEN (NVL(C.TOTAL_TALK,0) + NVL(C.TOTAL_HOLD,0) + (NVL((C.DATETIME - C.START_DATETIME)*86400,0)) )/86400 
            ELSE 0 END AS H_TIME

from TABLE1 C


LEFT JOIN TABLE2 S
ON S.ID = C.ID
where c.direct = 'Inbound'
)

where UPPER(ITEM1) like 'SOMETHING%'

GROUP BY


DAY

输出:

DAY              HANDLE_TIME
14-APR-17   .00567129629629629629629629629629629629629
15-APR-17   0
17-APR-17   0
17-APR-17   .00422453703703703703703703703703703703703
19-APR-17   .00269675925925925925925925925925925925925
19-APR-17   0
19-APR-17   0
19-APR-17   .00824074074074074074074074074074074074074

问题答案:

您的问题可能出在DATE类型携带的时间部分(即使您未明确设置它)。

要摆脱它,您可以使用trunc函数。

代替:

SELECT DAY,

经过:

SELECT trunc(DAY)

和:

GROUP BY DAY

经过:

GROUP BY trunc(DAY)


 类似资料:
  • 问题内容: 基本上,我只需要获取一个5位数的数字,并用空格分隔即可。5位数字可以在varchar中的任何位置。 示例:我在SQL 2008表中有一个varchar列,其中包含这些各种数据 5位数字可以在任何空格之间分隔的地方,什么是最好的提取方法呢? 谢谢 这样的行应返回空白 在没有运气的情况下尝试了以下内容 我想我需要结合使用对varchar中的空间数量进行计数。和以上。但我不确定该怎么做 问题

  • 我有这样的数据。 从上述数据中细化“中位数”的最短方法是什么。我的结果应该是这样的... 中位数 = 1/2(n 1),其中 n 是样本中数据值的数量。

  • 问题内容: 我向我的脚本发送这些参数:纬度:41.0186经度:28.964701(为示例)。我想找到最近的位置的名字。这该怎么做?(查询的代码必须更改的地方) SQL查询: 位置表是这样的:(实际上,这是巨大的表) 问题答案: 使用这个功能 您可以通过此功能进行排序,但是在大型数据集上这将非常慢,因此请尝试对记录集进行预过滤 UPD: 使用@chopikadze的测试数据: 假设地球不是大地水准

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能对未来的读者有所帮助。 我正在试图找到列表的中间值。我试过两种方法,但都不管用(我已经导入了我需要的东西,列表就在那里)。自拍是列表的名称 这就是错误 ret = umr_sum(arr, axis, dtype, out, keepdims) TypeError:无法对灵活类型执行reduce 另

  • 本文向大家介绍如何在R中找到没有分位数名称的分位数?,包括了如何在R中找到没有分位数名称的分位数?的使用技巧和注意事项,需要的朋友参考一下 R中的分位数的计算非常简单,我们只需要使用分位数功能,它就会返回所有分位数为0%,25%,50%,75%和100%的分位数。如果我们要避免打印这些分位数的名称,则可以将name = FALSE与分位数功能一起使用。例如,如果我们有一个叫做x的向量,那么没有名字