首页 > 解决方案 > Oracle SQL - 平均函数的最大值

问题描述

我有一张桌子 dane2_:

day          |visitors_number
-------------|---------------
02/01/2020   |250
...

说明: 1. 一周中个别日子的平均访客数(将一周中的某一天记录为文本:周一、周二等)。我做了:

SELECT 
day_written, ROUND( AVG (visitors_number),0) AS avg_visitors_number FROM
(SELECT day, TO_CHAR(day,'DAY','NLS_DATE_LANGUAGE = POLISH') AS day_written,
visitors_number
FROM dane2_) 
GROUP BY day_written
ORDER BY avg_visitors_number DESC;
  1. 一周中哪一天的平均访客人数最多?我想使用前面的查询,但不写回去。代码应该尽可能简单,使用 MAX 函数。先感谢您。

标签: sqloraclegroup-by

解决方案


我认为这是一个你可以ROWNUM在外部查询中使用的地方。看看这个例子:

SELECT sub.day_of_week, 
       ROUND(sub.avg_visitors_number, 0) AS AVG_VISITORS_NUMBER
FROM (SELECT TO_CHAR(d.day, 'DAY') AS DAY_OF_WEEK, 
             AVG(d.visitors_number) AS AVG_VISITORS_NUMBER
      FROM dane2 d
      GROUP BY TO_CHAR(d.day, 'DAY')
      ORDER BY AVG_VISITORS_NUMBER DESC) sub
WHERE ROWNUM = 1;

这是带有此示例的 DBFiddle(链接

该查询获取您的排序结果并仅选择第一行。需要注意的是,我建议在排序后进行一轮,以使您获得最准确的结果。


推荐阅读