Einfachste Weg, um ein Gesamt-Anzahl und eine Anzahl von eine Teilmenge?
War ich versucht, dies zu tun:
SELECT COUNT(*),
(
SELECT COUNT(*) FROM attend
WHERE (DATEPART(WEEKDAY,start_date) = 2 OR DATEPART(WEEKDAY,start_date) = 6)
AND empl_no = 12345
)
FROM attend as a
WHERE empl_no = 12345
Aber das scheint ein wenig hässlich. Gibt es einen besseren Weg, dies zu tun?
- Ist es die doppelte where-Klausel werden Teile oder die wiederholte Verwendung der gleichen Tabelle, dass Sie hässlich finde?
- Mehr die sub-Abfrage.
- FYI: Ein allgemeiner Tabellenausdruck gibt keine performance-Vorteil - nate c s Antwort ist das effizienteste Mittel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man eine CTE:
empl_no
.Verwenden:
CUBE
undROLLUPS
sind sehr nützlich für den Umgang mit final-und intermediate-Aggregate, die alle auf einen Schlag. Für diese Art von Frage, die CUBE wäre eine gute Passform, wenn die endgültige und fortgeschrittene Summen waren erforderlich, damit diese und ähnliche Fragen konnten beantwortet werden ohne weitere Abfragen aus der Quell-Tabelle. Ich habe festgestellt, CUBE sehr nützlich für die Vermeidung von Roundtrips zum DB. Jedoch in dem Fall, wo die genauen Anforderungen bekannt sind, vor der Zeit, fokussiert auf die select (schön demonstriert von @nate c) am meisten Sinn macht.