Ich versuche, die Anzahl der eindeutigen Treiber zu generieren, die ihre Reise abgeschlossen haben und nie auf dem Client abbrechen. Wenn ein Fahrer jemals auf einem Client abgesagt hat, sollte er aus den Ergebnissen entfernt werden.Mehrere Where-Klauseln und Eliminierung
Ich frage mich, ob eine Unterabfrage hier oder nicht benötigt wird. Die Daten, mit denen ich arbeite, werden hier angezeigt, und während ich rudimentär vorginge, dient es lediglich dazu, meine Abfrage zu testen.
id driver_id client_id city_id status
1 1011 9004 546 completed
1 1011 9008 323 completed
2 1011 9001 546 completed
3 1011 9006 323 completed
3 1011 9007 154 cancelled_by_client
1 1012 9001 546 cancelled_by_client
2 1012 9003 123 cancelled_by_driver
2 1012 9002 789 completed
2 1013 9007 546 cancelled_by_driver
4 1013 9006 546 cancelled_by_driver
2 1015 9001 546 completed
3 1015 9006 323 completed
3 1015 9007 154 cancelled_by_client
Was ich bin nach wie mein erwartetes Ergebnis ist eine Zählung des einzigartigen Treiber-IDs, die beide abgeschlossen haben ihre Reisen und nie auf dem Client (canceled_by_driver) abgebrochen.
driver_id non_driver_cancels
1011 1
1015 1
Ich habe eine GROUP BY hier in die Daten mit detaillierter zu zeigen, und ich sehe, dass die Fahrer 1012 hat eine canceled_by_driver aber sie sind immer noch in meinen Ergebnissen. Von dort glaube ich, ich kann einfach die driver_id zählen und diese Aufgabe beenden.
Jede Hilfe wird sehr geschätzt.
http://sqlfiddle.com/#!9/ad7cca/7
Ich habe Probleme beim Öffnen SQL Fiddle, so kann ich Ihren tatsächlichen Tabellennamen nicht sehen. –
Wenn Sie die ** Anzahl ** von Treibern möchten, benötigen Sie eine Unterabfrage. Sonst siehe Gordons Antwort. ... wenn Sie die Zählung wünschen, ist die Antwort von Gordon die Unterabfrage, und Sie müssen nur die verschiedenen driver_id's der Ergebnisse zählen. – Uueerdo
Und was ist mit einem möglichen Treiber, der nur "cancelled_by_client" Statuswerte hat? – Uueerdo