Ich versuche, die Funktionen mode() oder most_common_vals() als Unterabfrage-Kriterien zu verwenden.PostgreSQL-Filter, wo Kategorie am häufigsten ist
Allerdings bekomme ich weiterhin einen Fehler bezüglich der Nichtexistenz beider Funktionen.
Ich versuche, die Funktionen mode() oder most_common_vals() als Unterabfrage-Kriterien zu verwenden.PostgreSQL-Filter, wo Kategorie am häufigsten ist
Allerdings bekomme ich weiterhin einen Fehler bezüglich der Nichtexistenz beider Funktionen.
Wenn ich richtig verstehe, müssen Sie etwas wie folgt aus:
with requests (user_id, request_id, category) as (
select 1, 111, 'A' union all
select 1, 111, 'A' union all
select 2, 111, 'A' union all
select 2, 111, 'B' union all
select 1, 111, 'B' union all
select 3, 111, 'B' union all
select 1, 111, 'B' union all
select 1, 111, 'C'
)
-- Below is actual query:
select user_id, COUNT(request_id) AS total
from (
select t.*, rank() over(order by cnt desc) as rnk from (
select requests.*, count(*) over(partition by category) as cnt from requests
) t
) tt
where rnk = 1
group by user_id
order by total desc
limit 5
Hier user_id
und COUNT(request_id)
berechnet werden nur für 'B'
Kategorie, weil sie am häufigsten in diesem Beispiel ist.
Bitte beachten Sie auch, dass im Falle, dass es mehrere häufigste Kategorien gibt, diese Abfrage das Ergebnis aller dieser Kategorien erzeugt.
Was möchten Sie tun, wenn die Daten multimodal sind, d. H. Es gibt zwei oder mehr Werte, die am häufigsten vorkommen? –