Ich erstelle eine Datenbank für die Videowiedergabeseite und ich habe eine Tabelle mit Benutzern und einer Tabelle mit Anzeigeverlauf. Ich muss mithilfe der SQL-Abfrage mehrere der am häufigsten beobachteten Paare von Videos finden. Beispiel: Benutzer 1 sah Videos 12, 43, 50, 66, 78; Benutzer 2 sah 12, 43, 45, 50; Benutzer 3 beobachtete 12, 35, 50, 66, 78; user 4 sah zu 33, 66, 69, 78 So sind die beiden meistgesehenen Paare (12,50) und (66,78). Aber ich kann nicht einmal, wie man diese Paare für die zukünftige Zählung bildet. Also, meine Frage ist, wie man alle möglichen Paare bildet und die Quantität der Ansichten von jedem von ihnen zählt.Bilden und zählen Sie das am häufigsten besuchte Paar. Sql oracle
0
A
Antwort
0
Selbst join
ist der richtige Weg, dies zu tun. Ich denke, die einfachste Form der Abfrage lautet:
select vh.*
from (select vh1.movie as movie1, vh2.movie as movie2, count(*) as cnt,
rank() over (order by count(*) desc) as seqnum
from viewing_history vh1 inner join
viewing_history vh2
on vh1.userid = vh2.userid and vh1.movie < vh2.movie
group by vh1.movie, vh2.movie
) vh
where seqnum = 1;
0
In der folgenden Lösung erstellen Sie eine Unterabfrage, um Eingabedaten zu simulieren. In Ihrer Anwendung sollten Sie anstelle von viewing_history
Ihre Anzeigeverlaufstabelle verwenden. Ich sehe nicht, wie die Tabelle "users" in diesem Problem relevant ist. Die zweite Unterabfrage, die ich movie_pairs
nannte, ist ein innerer Join des Betrachtungsverlaufs mit sich selbst - so erstellen Sie die Paare. Ich ging darüber hinaus - mit dem in der Hand, fuhr ich fort, die Paare zu identifizieren, die am häufigsten zusammen betrachtet werden.
with
viewing_history (userid, movie) as (
select 1, 12 from dual union all
select 1, 43 from dual union all
select 1, 50 from dual union all
select 1, 66 from dual union all
select 1, 78 from dual union all
select 2, 12 from dual union all
select 2, 43 from dual union all
select 2, 45 from dual union all
select 2, 50 from dual union all
select 3, 12 from dual union all
select 3, 35 from dual union all
select 3, 50 from dual union all
select 3, 66 from dual union all
select 3, 78 from dual union all
select 4, 33 from dual union all
select 4, 66 from dual union all
select 4, 69 from dual union all
select 4, 78 from dual
),
-- end test data, query begins here (but include the keyword WITH from above)
movie_pairs (movie1, movie2, ct) as (
select a.movie, b.movie, count(*)
from viewing_history a inner join viewing_history b
on a.userid = b.userid and a.movie < b.movie
group by a.movie, b.movie
)
select movie1, movie2
from movie_pairs
where ct = (select max(ct) from movie_pairs)
order by movie1, movie2 -- ORDER BY is optional
;
Ausgang:
MOVIE1 MOVIE2
---------- ----------
12 50
66 78
Verwandte Themen
- 1. Oracle SQL - Zählen bis 3
- 2. Finden Sie das am häufigsten verwendete Wort mit hashmaps C++
- 3. Finden Sie das am häufigsten verwendete Wort von Benutzereingabe
- 4. SQL Oracle. Blick zu zählen
- 5. Besuchte Benutzer zählen in ASP.NET ohne Datenbank
- 6. am häufigsten Vorkommen
- 7. SQL: Das Finden der seltensten und am häufigsten Wert in einer Reihe von Beziehungen
- 8. Finden Sie die am häufigsten wiederholte Sequenz in einer Datei
- 9. php: am wenigsten/am häufigsten Zeichen
- 10. Finde die am häufigsten verwendeten unterscheidbaren Begriffe
- 11. am häufigsten verwendeten Ajax Controls
- 12. Pandas zählen am häufigsten Elemente in verschachtelten Listen innerhalb gropby und bekommen nlargest
- 13. Welches Produkt wird am häufigsten bestellt?
- 14. Benötigen Sie Hilfe bei der Lösung SQL Oracle Zählen Charaktere
- 15. Oracle SQL zählen Fälle um eine Spalte
- 16. So finden Sie die am häufigsten verwendete Gruppe von Spielern
- 17. am häufigsten ID-Behandlung von PHP-Array
- 18. Teilen und Conquer am nächsten Paar Algorithmus
- 19. Am häufigsten verwendetes Passwort in verschiedenen Sprachen
- 20. Bootstrap und besuchte Links
- 21. Java OJDBC Oracle SQL-Abfrage hängt alle paar Monate einmal
- 22. mysql letzte Reihe am häufigsten Spaltenwert
- 23. Python am häufigsten gemeinsamen Paar von Indizes in 3 x n-Array
- 24. Wie finden Sie welche Kombinationen am häufigsten haben?
- 25. Zählen Übereinstimmungen in Oracle
- 26. R: Finden Sie zwei Strings am häufigsten zusammen pro Kategorie
- 27. Finden am häufigsten in Dataframe von Listen
- 28. Am häufigsten Muster mit einer Bestellung
- 29. SQL: Finden Sie am häufigsten Werte für bestimmte Mitglieder in Spalte 1
- 30. ASP.NET: Ihre am häufigsten verwendeten httpmodules
'Gruppe nach Benutzer, Film' – jarlh
@jarlh - sorgfältig zu erarbeiten? Ich sehe nicht, wie die Gruppierung nach Benutzer, Film hat etwas mit der Frage zu tun. – mathguy