Ich habe Film-Verleih-Datenbank, mit der ich arbeite hier und ich versuche, den am meisten gemieteten Film pro Kategorie zu finden. Ich möchte den Titel und die Kategorie ausdrucken. Hier ist mein Code-Block:bekommen am meisten gemieteten Film pro Kategorie
declare
type listOfCat is varray(10) of varchar2(10);
categories listOfCat;
movCount number(2);
title varchar2(50);
begin
select distinct category bulk collect into categories from movie;
for i in 1.. categories.count loop
select max(count) into movCount from
(select count(r.movie_id) as count, m.title as mov, m.CATEGORY as cat from rental r
join movie m on r.movie_id = m.movie_id
where m.category = categories(i)
group by m.title, m.CATEGORY
);
dbms_output.put_line(movCount || ' ' || categories(i));
end loop;
end;
Nun das Problem ist, ich weiß nicht, wie der Filmtitel in diesem Fall zu erhalten. Ich habe versucht, max (count) einen Alias zu geben und Alias.mov zu tun, aber wenn man am Ende eine group by-Klausel hinzufügt, gibt es einen ungültigen Bezeichnerfehler. Auch die Gruppierung nach dem Ergebnis, das ich bei max (count) erhalte, wird das Ergebnis nur dann wieder trennen, wenn ich mehrere Filme pro Kategorie habe. Schließlich habe ich auch versucht, movCount, mov und cat in Arrays zu setzen und sie parallel anzuzeigen, aber das garantiert mir nicht, dass die Reihenfolge richtig ist.
Filmtabelle hat movie_id, title, category, qty_available. Vermietung Tisch hat movie_id, customer_id, DUE_DATE kehrte Customer-Tabelle CUSTOMER_ID hat, Name
Gibt es eine Chance, dass Sie ein Beispiel der Daten in 'Film' und' Verleih' bereitstellen können? – alexgibbs
Ich fragte mich, was würden Sie im Falle eines Unentschiedens tun? Zum Beispiel, wenn die maximale Anzahl von Mieten in einer Kategorie von zwei Filmen in dieser Kategorie geteilt wird. – alexgibbs
nehmen Sie die erste – user220177