Próbuję uzyskać maksymalne powtarzające się rzędy dziennie. Dostarczę przykładowe dane i oczekiwany wynik na nim

Mój stół wygląda jak

enter image description here

SELECT TYPE, DAY, COUNT(1) FROM table1 
GROUP BY TYPE, DAY
ORDER BY DAY



TYPE    DAY  COUNT(1)
A       1    4 
B       1    2
A       2    5
B       2    7

Oczekiwany wynik

TYPE    DAY  COUNT(1)
A       1    4 
B       2    7

Próbuję przyjmować maksymalne powtarzające się rzędy dziennie na podstawie liczenia. Z góry dziękuję, każda pomoc była bardzo doceniana

https://dbfiddle.uk/?rdbms=Oracle_18&ki ;fiddle=d9001B680AC9FE57A6394A682800F077.

0
Abdul 20 październik 2020, 18:01

1 odpowiedź

Najlepsza odpowiedź

Jedna metoda wykorzystuje row_number():

SELECT t.*
FROM (SELECT TYPE, DAY, COUNT(*),
             ROW_NUMBER() OVER (PARTITION BY DAY ORDER BY COUNT(*) DESC) as seqnum
      FROM table1 
      GROUP BY TYPE, DAY
     ) t
WHERE seqnum = 1
ORDER BY DAY;

Jeśli chciałeś tylko tego typu, to nazywa się MODE. Możesz uzyskać to za pomocą STATS_MODE():

select day, stats_mode(type)
from table1
group by day;
1
Gordon Linoff 20 październik 2020, 15:02