2017-09-27 1 views
0

Ich versuche Bezirke zu finden, die Kriminalitätsraten unter der durchschnittlichen Kriminalitätsrate haben, die für jede Tabelle berechnet wird. Ich sollte das für drei verschiedene Tische tun und jeder Tisch muss seine eigene durchschnittliche Kriminalitätsrate haben. So habe ich es gemacht, aber ich habe mich gefragt, ob es keinen besseren Weg gibt? Würde das schreiben als eine gespeicherte Prozedur oder Funktion besser sein (nicht sicher, wie ich das machen würde)? Wie sonst kann das gemacht werden?Finden von Raten niedriger als Durchschnittswerte für mehrere Tabellen

T1, T2, T3 sind Zustände für dieses Beispiel. Ich betrachte Distrikte in drei verschiedenen Staaten und möchte eine durchschnittliche Kriminalitätsrate für jeden Staat. Dann möchte ich die Bezirke ausdrucken, die unter diesen Durchschnitt fallen. Ich möchte auch gerne herausfinden, aus welchem ​​Vereinigungsergebnis die Ergebnisse stammen.

SELECT district, population 
FROM T1 
WHERE (crime/Population) < (SELECT AVG(crime/population) From T1) 
UNION ALL 
SELECT district, population 
FROM T2 
WHERE (crime/Population) < (SELECT AVG(crime/population) From T2) 
UNION ALL 
SELECT district, population 
FROM T3 
WHERE AND (crime/Population) < (SELECT AVG(crime/population) From T3) 
+0

Was T1 ist? Was ist T2? Was ist T3? Siehe: [Warum sollte ich ein MCVE für eine scheinbar einfache SQL-Abfrage bereitstellen?] (Https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve- for-was-scheint-zu-mir-eine-sehr-einfache-sql-Abfrage) – Strawberry

+0

T1, T2, T3 sind Zustände. – Rubiks

+0

Überlegen Sie ernsthaft, Ihr Schema zu ändern. Du brauchst 1 Tisch, nicht 50! – Strawberry

Antwort

0

Lösung einfach Sie Spalte hinzufügen können zur Folge haben (Kriminalität/Bevölkerung) pro Tisch (T1, T2, T2) und erstellen Sie Tabelle AVG führen (Kriminalität/Bevölkerung)

Verwandte Themen