oracle 如何显示最常引用条目的详细信息

xdnvmnnf  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(136)

所以我有一个表,这是一个IT帮助台内的门票。每个标签“ID_TICKET”与特定故障相关,并具有关联的计算机“SERIAL_NO_COMPUTER”。
我希望能够计算与每台计算机连接的故障数,然后显示故障最多的计算机的每个故障的详细信息“PROBLEM_DESCRIPTION”。
我创建了以下列表来统计与每台机器相关的故障数量:

SELECT SERIAL_NO_COMPUTER, COUNT(*) AS OCCURANCES
FROM TICKET 
GROUP BY SERIAL_NO_COMPUTER 
ORDER BY COUNT(*) DESC;

这为我提供了报告故障最多的计算机,但我不确定如何使用一个语句为每个问题生成详细信息。

9vw9lbht

9vw9lbht1#

如果您需要收集报告故障最多的计算机的信息,而不是聚合,您可以用途:

  • ORDER BY子句中的一个窗口函数,它根据记录的计数更改记录的顺序。
  • FETCH NEXT 1 ROWS WITH TIES,以收集与最高计数绑定的一行(该子句考虑了ORDER BY子句)。
SELECT TICKET.*
FROM TICKET 
ORDER BY COUNT(*) OVER(PARTITION BY SERIAL_NO_COMPUTER) DESC 
FETCH NEXT 1 ROW WITH TIES

如果两台计算机具有相同的最大故障数,则此查询应给予两台计算机的记录。如果你只想从一台pc上得到记录,你需要在ORDER BY子句中再添加一列(例如pc serial)。

SELECT TICKET.*
FROM TICKET 
ORDER BY COUNT(*) OVER(PARTITION BY SERIAL_NO_COMPUTER) DESC, SERIAL_NO_COMPUTER
FETCH NEXT 1 ROW WITH TIES

相关问题