Zum Inhalt springen

Oracle 10g: eine Spalte mehrmals abfragen


bionaut

Empfohlene Beiträge

Hallo zusammen,

SQL ist nicht mein Spezialgebiet und deshalb richte ich meine Frage an Euch. Ich habe eine Tabelle mit folgenden Werten.

Zeit Strasse Geschwindigkeit

09:00 Waldstr. 37

09:05 Bergstr. 61

09:10 Bergstr. 63

09:15 Waldstr. 84

09:20 Hohemark 10

09:25 Hohemark 29

09:30 Waldstr. 95

09:35 Bergstr. 9

09:40 Bergstr. 20

09:45 Waldstr. 16

09:50 Waldstr. 21

09:55 Hohemark 8

10:00 Hohemark 57

10:05 Hohemark 76

10:10 Bergstr. 74

Jetzt würde ich gerne wissen, wie viele in jeder Strasse unter 30, zw. 30 und 50 und über 50 gefahren sind. In der Art von


SELECT Strasse, count(Geschwindigkeit<=30), count(Geschwindigkeit>30und <=50), count(Geschwindigkeit>50)

FROM tabelle

GROUP BY Strasse;

Ergebnis so (Werte stimmen nicht mit Tabelle oben überein):

Strasse "v < 30" "v > 30 < 50" "v > 50"

Waldstr 3 5 7

Bergstr 2 4 6

Hohemark 5 3 5

Ich weiss das oben geschriebenes Statement nicht funktioniert :) Nur hört an dieser Stelle mein SQL-Wissen auf. Habe schon meinen dicken Leitz mit SQL Unterlagen durchwühlt aber nichts gefunden was ich verwerten könnte.

Hoffe es kann mir einer helfen, hoffe ich habe es verständlich beschrieben.

Die besten Grüße

Andreas

Link zu diesem Kommentar
Auf anderen Seiten teilen

sollte man nicht mit left oder right joins arbeiten, group by benutzen und having Geschwindigkeit > 30, between 30 and 50 .... arbeiten?

Was spricht gegen die Lösung mit Subqueries?

Ich wüßte jetzt auf Anhieb nicht, wie ich das mit Joins, Group by und having lösen könnte. Hast du ein konkretes Beispiel für deinen Lösungsansatz? Würde mich nämlich brennend interessieren. :beagolisc

Link zu diesem Kommentar
Auf anderen Seiten teilen

@jan: habs gerade ausprobiert, die Ergebnisse sind auf jedenfall interessant aber nicht ganz stimmig mit dem was ich erwartet habe (ca. um dem Faktor 100-1000 zu hoch).

@rest: joins waren mir immer ein graus ... bin natürlich aber für alle Möglichkeiten offen.

Aber ich spiel noch ein wenig mit dem SQs rum.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine ungetestete Lösung über Join/Subqueries:


SELECT 

  a.strasse, 

  b.anz, 

  c.anz, 

  d.anz 

FROM 

  ()a 

LEFT JOIN 

  ()b 

ON 

  a.strasse=b.strasse 

LEFT JOIN 

  ()c 

ON 

  a.strasse=c.strasse 

LEFT JOIN 

  ()d 

ON 

  a.strasse=d.strasse

Ein Left join über 4 Subqueries

a. Liste der Strassen

SELECT DISTINCT strasse FROM tabelle

b. < 30km

SELECT strasse, count(strasse) anz FROM tabelle WHERE geschwindigkeit<30 GROUP BY strasse

c. >30 <50

...

d.

...

Subquery ()a braucht man um auch dann Daten zu erhalten, wenn in einer Kategorie (z.B <30km) keine/weniger Strassen vorhanden sind

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und auch ganz ohne Join:

SELECT count(*),strasse ,'Geschwindigkeit unter 30' Geschwindigkeit

WHERE geschwindigkeit < 30

GROUP BY strasse

UNION ALL

SELECT count(*),strasse ,'Geschwindigkeit zw. 30 und 50' Geschwindigkeit

WHERE geschwindigkeit between 30 and 50

GROUP BY strasse

UNION ALL

SELECT count(*),strasse ,'Geschwindigkeit größer 50' Geschwindigkeit

WHERE geschwindigkeit between 30 and 50

GROUP BY strasse;

Dim

PS: Wieso Outer Joins?

Link zu diesem Kommentar
Auf anderen Seiten teilen

das wird meines wissens nicht funktionieren

Jep hast recht. Hab überall die FROM Klausel vergessen... :old

Ausserdem ist beim letzten SQL die WHERE Bedingung falsch :rolleyes:

da bei union die spalten identisch sein müssen

Ne das passt schon. Sind ja alle vom gleichen Typ.

bei joins wirds quasi nebeneinander eingefügt

Stimmt. Mein Statement liefert das Ergebnis untereinander. Da müsste man noch pivotieren.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...