我正在嘗試在列中找到最經常出現的一天。該表具有日期的時間戳。我可以得到一個日期串列:
SELECT TO_CHAR(column_name, 'DY') "Day" from Table;
它回傳日期串列。周二 周二 周三 周四
我如何計算那些日子并回傳最常發生的日子 (TUE)。我嘗試了很多不同的方法。
uj5u.com熱心網友回復:
這是基于樣本 Scott 的 EMP 表。
招聘人員的日子:
SQL> select hiredate, to_char(hiredate, 'DY') as day
2 from emp
3 order by day;
HIREDATE DAY
---------- ---
01.05.1981 FRI
20.02.1981 FRI
28.09.1981 MON
23.01.1982 SAT
22.02.1981 SUN
02.04.1981 THU
03.12.1981 THU
03.12.1981 THU
09.12.1982 THU
08.09.1981 TUE
17.11.1981 TUE
09.06.1981 TUE
17.12.1980 WED
12.01.1983 WED
14 rows selected.
哪一天最頻繁?最重要的一個。使用RANK函式來計算它(因為兩天或更多天可能有相同的值)。
SQL> with temp as
2 (select to_char(hiredate, 'DY') as day,
3 count(*) cnt,
4 rank() over (order by count(*) desc) rnk
5 from emp
6 group by to_char(hiredate, 'DY')
7 )
8 select day, cnt
9 from temp
10 where rnk = 1;
DAY CNT
--- ----------
THU 4
SQL>
uj5u.com熱心網友回復:
您可以按每天的計數排序,然后用于FETCH FIRST ROW WITH TIES獲取頻率最高的日期:
SELECT TO_CHAR(hiredate, 'DY') "Day"
FROM emp
GROUP BY TO_CHAR(hiredate, 'DY')
ORDER BY COUNT(*) DESC
FETCH FIRST ROW WITH TIES;
其中,對于SCOTT模式輸出:
日 周二 周四
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/425312.html
