Count() einschränken

daryl

Mitglied
Hallo,

ich habe eine Tabelle, die 3 Spalten hat:
bahn1
zeit1
zeit2

Ich möchte gerne, dass MySQL mir die Anzahl der Einträge ausgibt, wo zeit1<zeit2
Dazu noch den Durchschnittswert des Users bei zeit1 und die Gesamtanzahl, wie oft user eingetragen ist.
Mit dieser Abfrage kommt er leider nicht recht klar:
Code:
 SELECT AVG( zeit1 ) AS durchschnitt, COUNT( zeit1 < zeit2 ) AS siege, COUNT( * ) AS gesamt
FROM rwrennergs
WHERE zeit1 !=60 AND bahn1 = 'name'
GROUP BY bahn1 LIMIT 0 , 30

Leider habe ich aber eine MySQL-Version, die keine geschachtelten Querys (heißt das so) beherrscht (Version MySQL 3.23.58)
 
Nur ein verzweifelter Versuch:
Code:
... SUM(GREATEST(0,SIGN(zeit2-zeit1))) AS siege ...

Gruß hpvw
 
du kannst count auch nicht so verwenden (nebenbei - welches Datenbanksystem?)

count(*) ==> zählt alle Zeilen, inklusive Nullwerte
count(spalte) ==> zählt alle Zeilen, in denen spalte nicht Null ist

Das ganze ist ann noch mit distinct kombinierbar (count(distinct spalte)) ==> zählt die eindeutig identifizierbaren Werte der spalte ohne Null-Werte.

Mehr geht nicht.

z.B. in Oracle müsste aber folgendes gehen (keine Garantie)

Code:
 SELECT AVG( zeit1 ) AS durchschnitt, COUNT( select zeit2 from rwrennergs where zeit2 > zeit1 ) AS siege, COUNT( * ) AS gesamt
FROM rwrennergs
WHERE zeit1 !=60 AND bahn1 = 'name'
GROUP BY bahn1 LIMIT 0 , 30

Inwieweit das dann semantisch passt, kann ich jetzt net abschätzen.

cu shutdown
 
daryl hat gesagt.:
Leider habe ich aber eine MySQL-Version, die keine geschachtelten Querys (heißt das so) beherrscht (Version MySQL 3.23.58)
Kommt nicht oft vor, aber diesmal wurde das DBMS genannt ;)

@daryl:
Du umschreibst es übrigends richtig, man nennt das Konstrukt dann allerdings Subquery.

Gruß hpvw
 
Zurück