2016-03-12 205 views
0

的一个小时,我想它不同的方式,但还是不知道如何得到这个结果(SQL - 寻找最大活性

enter image description here

QRY_TYPEID - 类型的唯一标识符, С_NAME - 型,C_AB_REF的名称 - 链接到abonent,谁处理这些类型的消息)

ST_ABONENTSID - 唯一标识符,С_NAME - 名)

QRY_QUEUEID - 唯一的标识符,С_IN_TIME - 日期和写作味精成表,C_EXEC_TIME的时间 - 日期和味精处理的时间,C_ST - 处理状态(空 - 没有,1 - 成功,0 - 处理错误),C_QRY_TYPE - 查询类型的链接)。

我需要进行SQL查询,当CNT(此时的消息数量最大) - 换句话说,所有abonents的最高负载小时数时,它将显示HOUR。

结果应该是这样的

enter image description here

+0

小时,exec_time的小时,差异小时?我对这个问题感到困惑。 – xQbert

回答

1
SELECT EXTRACT(HOUR FROM C_EXEC_TIME) AS hr 
    ,COUNT(*) AS cnt 
FROM 
.... 
GROUP BY 
    EXTRACT(HOUR FROM C_EXEC_TIME) 
ORDER BY 
    COUNT(*) DESC 
FETCH FIRST ROW ONLY 

如果你的Oracle版本不支持FETCH:In_time的的

SELECT * 
FROM 
(
    SELECT EXTRACT(HOUR FROM C_EXEC_TIME) AS hr 
     ,COUNT(*) AS cnt 
     ,ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS rn 
    FROM 
    .... 
    GROUP BY 
     EXTRACT(HOUR FROM C_EXEC_TIME) 
) dt 
WHERE rn = 1 
+0

它的工作原理,但创建第三列“rn” – Alexey

+0

@Alexey:提示,替换'SELECT *':-) – dnoeth

+0

哦,当然,thx! SELECT hr,cnt – Alexey