DISTINCT COUNT in der SELECT CASE-SQL
Ich habe eine Tabelle berichten, dass auch die Felder Case
(eindeutige Nummer), ISR
(Individual Safety Report - eindeutige Nummer) und YearsOld
.
Kann es mehr als eine ISR für jeden Fall. Ich möchte zum zählen der Anzahl von eindeutigen Fällen innerhalb von Altersgruppen.
Diese SQL gibt mir die Anzahl der ISRs:
SELECT
COUNT(CASE WHEN `YearsOld` = -2) THEN 1 END) `No Report`,
COUNT(CASE WHEN `YearsOld` BETWEEN 0 AND 5) THEN 1 END) `0 to 5`
COUNT(CASE WHEN `YearsOld` BETWEEN 6 AND 12) THEN 1 END) `6 to 12`
FROM `Demographics`
gibt es eine Möglichkeit, dies zu ändern, um count DISTINCT Cases
für diese Altersgruppen?
- Immer eine Möglichkeit, aber was ist, wenn ein Fall sich über eine person aus, die 5-6 Jahre alt. Wollen Sie die Zählung in dem Bereich liegen, der Fall begann, oder der Fall, in denen die person zugeordnet ist, über die die neueste Aktivität.
- Kann ein
Case
haben unterschiedlicheYearsOld
Alter für verschiedeneISR
? - Ja. Eine ISR ist eine Individuelle Sicherheits Bericht über eine "unerwünschte Arzneimittelwirkungen". Kann es mehr als eine ISR auf einen bestimmten Vorfall (verfasst von zwei oder mehr Reporter), und es kann mehr als eine ISR auf dem gleichen Falle für Unerwünschte Ereignisse, die passiert ist, um ihn/Sie zu verschiedenen Zeitpunkten. Idealerweise Case+DateOfEvent+YearsOld würde verwendet werden, um zu zählen, die genaue Anzahl der Unerwünschten Ereignisse, die passiert ist ein Fall in einem bestimmten Alter, sondern das Datum der Veranstaltung, ist oft weggelassen, aus den berichten, so Fall+YearsOld ist so nah wie ich bekommen kann, um das zählen der einzigartige Fall+AdverseEvents. Deine Lösung unten funktioniert Super.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr "Fall" - variable ist ein Unikat, Sie können sicher stellen das Schlüsselwort distinct in der SQL-CASE-syntax direkt:
So, jeder einzigartige Wert der case-variable wird nur einmal gezählt.
Nur ein Hinweis auf die Spalte benennen, würde ich vorschlagen, nicht mit einem Wort, das Sinn hat, in SQL, wenn Sie die Wahl haben (I. e. verwenden Sie 'case_num' anstelle der Fall).
Case
ist der Feldname in der vorhandenen Tabelle eingefügt.Könnten Sie mithilfe einer Unterabfrage filtern Sie Ihre Demografie-Tabelle für eine einzelne
YearsOld
Feld pro Fall, obwohl, wenn, dass der Fall möglicherweise damit verbundenen Unterschied der Altersgruppen für verschiedeneISR
es wird nur am Ende wird gezählt, die in einer Halterung (vielleicht ist dies, was Sie wollen?):Alternativ zu "zählen" jeder "verschiedene", "Fall" innerhalb jeder Klammer, die Sie tun buchstäblich, dass:
Case
+YearsOld
hiervon perfekt.