2016-03-29 4 views
-3

select SUM(category) from film_list where title IN actors;SQL. Ich bin fest mit dieser SQL-Abfrage

Ich bin fest, ich bin auf der Sakila Datenbank arbeiten, und ich versuche, in den Filmkategorien, um herauszufinden, zwischen 55 und 65 Filmen sind. Geben Sie die Namen dieser Kategorien und die Anzahl der Filme pro Kategorie, sortiert nach der Anzahl der Filme.

SELECT category, COUNT(*) AS films_per_category 
    FROM film_list 
GROUP BY category 
HAVING COUNT(*) BETWEEN 55 AND 65 
ORDER BY films_per_category 

Aber es wäre nicht so viel zu raten, wenn Sie ein Überblick Schema und einige Beispieldaten zur Verfügung gestellt haben:

+0

Du bist so weit von Ihrem Ziel, dass es scheint nutzlos zu sein. Sehen Sie sich ein gutes Buch oder ein Tutorial zu MySQL an und wenden Sie sich dann an uns. – Strawberry

+0

Geben Sie ein (mehr oder weniger minimales) Gliederungsschema und einige Beispieldaten sowie die erwartete Ausgabe dieser Daten an. Klar, 55 oder mehr Zeilen sind zu viele für eine Frage hier; Sie könnten entscheiden, zwischen 5 und 6 oder einen ähnlichen kleineren Bereich zu verwenden - es würde es einfacher machen, einige Zeilen mit Beispieldaten bereitzustellen. Ich denke, es würden vielleicht 2 oder 3 Spalten von Daten benötigt (eine wäre Kategorie; Titel und eine andere könnte angemessen sein). –

+0

Es ist die [Sakila-Beispieldatenbank] (https://dev.mysql.com/doc/sakila/en/). Es ist auf der [MySQL-Website] (https://dev.mysql.com/doc/index-other.html) unter Beispieldatenbanken verfügbar. – Revenant

Antwort

1

versuchen, diese

SELECT category, Count(*) AS FilmsCount 
FROM Film_List 
GROUP BY Category 
HAVING Count(*) BETWEEN 55 AND 65 
ORDER BY FilmsCount 
-2

Try-zwischen-Operator

SELECT category, COUNT(*) AS films_per_category 
FROM film_list 
ORDER BY films_per_category 
HAVING COUNT(*) BETWEEN 55 AND 65 
+0

Wieso wird geworben? –

+0

Nicht mein Down-Vote, aber das ist sehr unwahrscheinlich. Ein Filmtitel ist normalerweise nicht numerisch, daher funktioniert die BETTE nicht. In ähnlicher Weise sind Kategorien wahrscheinlich nicht numerisch, so dass SUM keinen Sinn ergibt - in der Frage auch nicht. –

+0

Das ist sicherlich besser, aber was ist mit der GROUP BY-Klausel passiert? Das ist in den meisten DBMS notwendig, aber MySQL hat im Bereich der Gruppierung einige eigene Regeln. Und die Reihenfolge der Klauseln ist falsch, zumindest im klassischen SQL. –

0

Bei einer Vermutung zu verwenden. Zugegeben, wir würden nicht 55 Zeilen sehen wollen, aber zu Demonstrationszwecken würden zwischen 5 und 6 Zeilen OK funktionieren.

1

Ich glaube, Sie brauchen eine Gruppe von und mit

select category, count(*) as num_film 
from film_list 
group by category 
having num_film BETWEEN 55 AND 65 
order by num_fim 
0

Diese Unterabfrage bezeichnet wird:

select sum(category) 
from film_list 
where title IN (SELECT title FROM actors); 
+0

Bitte besprechen Sie Ihre Argumentation - warum summieren Sie Kategorien, warum enthält die Akteurs-Tabelle eine Titelspalte, wo ist der Kategoriename, wo ist die Bedingung auf 55-65 Zeilen usw. –

+0

Während die Info fehlt, dachte ich geben Sie ein Beispiel für das Schreiben einer Unterabfrage. Sei nicht so streng mit mir. – SnakeFoot

Verwandte Themen