Ich bin ein Schullehrer sehr neu zu MS SQL Server. Jeder schlägt vor, diese Seite auszuprobieren. Hier geht!% der Teilnehmer, die während sechs Monaten beibehalten werden
Ich versuche, Abfragen zu schreiben, um verschiedene Arten von Ergebnismaßen für die Teilnahme an einem akademischen Programm zu testen. Es gibt verschiedene Möglichkeiten, diese Ergebnismessung zu berechnen, die ich ausprobieren möchte. Das Ergebnis, das ich zu berechnen versuche, ist: Wie hoch ist der Prozentsatz der Teilnehmer, die während sechs Monaten des Programms erhalten bleiben? Ich teste verschiedene Möglichkeiten, Teilnehmer und verschiedene Zeitbereiche zu definieren. Es gibt 4 Abfragen, die ich erstellen möchte. Leider muss ich für verschiedene Tabellen verwenden: Teilnahme, Status, Deenrolled, Inaktiv. Ich habe von jedem enthaltenen Beispieldaten unter
Abfragen
- Ein Teilnehmer wird als jeder definiert, die eine Klasse mindestens zweimal in der Woche für 6 Monate besucht (181 Tage insgesamt) am 1. Juli 2012 beginnen und Ende Juni 30. 2013, so die Länge des Geschäftsjahres.Wenn ein Teilnehmer ist deenrolled oder inaktiv sie fallen gelassen werden.
- Ein Teilnehmer wird als jeder definiert, die eine Klasse mindestens zweimal in der Woche für 6 Monate (181 Tage insgesamt) ab 1. Januar 2013 besuchte Wenn ein Teilnehmer ist deenrolled oder wird inaktiv sie fallen gelassen werden.
- ist ein Teilnehmer als jeder definiert, die 2013 bis heute am 1. Januar beginnt eine Klasse mindestens zweimal in der Woche besucht
- Ein Teilnehmer als Einschreibung Startdatum des Schülers definiert ist, bis sie deenrolled oder inaktiv.
Teilnehmer (Numerator) Teilnehmer/alle Studenten, die serviert wurden (Denominator)
Die 4 Abfrage Ausgänge ich suche sind verschiedene Versionen dieses:
Beispiel
Participants Served Percent_Served
75 100 75%
Ich habe mit verschiedenen Versionen der Abfrage unter
SELECT
Count (distinct ID) as Count,
Count (DATEADD(dd, -181, DATEADD(wk, DATEDIFF(wk,0,Date), 0)) > 2 as Participants ,
FROM Attendance
where Attendence_date date between '07/01/2012' and '06/30/2013'
and ID not in (Select ID from Inactive)
or ID not in (select ID from Deenrolled)
GROUP BY ID
und
SELECT
Count (distinct ID) as Count,
Count (DATEADD(dd, -181, DATEADD(wk, DATEDIFF(wk,0,Date), 0)) - Enrolled_Date as Participants ,
FROM Attendance
where Attendence_date date between '07/01/2012' and '06/30/2013'
and ID not in (Select ID from Inactive)
or ID not in (select ID from Deenrolled)
GROUP BY ID
Jede Programmierung Unterstützung für diese Abfragen wird sehr geschätzt.
Im Folgenden finden Sie die Beispiel-/Beispieldatensätze.
Attendence_Date ist das Datum, an dem ein Student an einer Klasse teilgenommen hat.
CREATE TABLE Attendance (
ID int,
Attendence_date datetime
)
INSERT INTO Attendance VALUES
(4504498, '7/1/2012'),
(4504498, '7/2/2012'),
(4504498, '7/3/2012'),
(4504498, '7/4/2012'),
(4504498, '7/5/2012'),
(4504498, '7/8/2012'),
(4504498, '7/9/2012'),
(4504498, '7/10/2012'),
(4504498, '7/11/2012'),
(4504498, '7/12/2012'),
(4504498, '7/1/2012'),
(4504498, '7/2/2012'),
(4504498, '7/3/2012'),
(4504498, '7/4/2012'),
(4504498, '7/5/2012'),
(4504498, '7/8/2012'),
(4504498, '7/9/2012'),
(4504498, '7/10/2012'),
(4504498, '7/11/2012'),
(4504498, '7/12/2012'),
(9201052, '7/15/2012'),
(9201052, '7/16/2012'),
(9201052, '7/17/2012'),
(9201052, '7/17/2012'),
(9201052, '7/18/2012'),
(7949745, '7/17/2012'),
(7949745, '7/18/2012'),
(7949745, '7/23/2012'),
(7949745, '7/23/2012'),
(7949745, '7/24/2012'),
(7949745, '7/26/2012'),
(7949745, '7/26/2012'),
(7949745, '8/8/2012'),
(7949745, '8/8/2012'),
(7949745, '11/5/2012'),
(7949745, '11/5/2012'),
(7949745, '11/5/2012'),
(7949745, '11/6/2012'),
(7949745, '11/6/2012'),
(7949745, '11/6/2012'),
(7949745, '11/7/2012'),
(7949745, '11/7/2012'),
(7949745, '11/7/2012')
Hier ist das Registrierungsdatum enthalten.
CREATE TABLE [Status] (
ID int,
Intake_Date datetime ,
Engaged_Date datetime ,
Enrolled_Date datetime)
INSERT INTO [Status] VALUES
(7949745, '3/7/2012', '7/17/2012', '3/8/2012'),
(4504498, '2/21/2013', '3/5/2013', '3/22/2013'),
(1486279, '4/18/2013', '5/7/2013', '5/20/2013'),
(9201052, '5/15/2012', '7/13/2012', '5/15/2012'),
(1722390, '3/5/2012', '8/27/2012', '3/8/2012'),
(7735695, '9/7/2012', '9/7/2012', '9/28/2012'),
(9261549, '3/7/2012', '7/24/2012', '3/8/2012'),
(3857008, '3/15/2013', '3/18/2013', '4/3/2013'),
(8502583, '3/14/2013', '4/15/2013', '5/3/2013'),
(1209774, '4/19/2012', '1/1/2012', '4/24/2012')
Hier ist das Datum der Abmeldung.
CREATE TABLE Deenrolled (
ID int,
Deenrolled_Date datetime)
INSERT INTO Deenrolled VALUES
(7949745, '2/4/2013'),
(5485272, '07/08/2013'),
(8955628, '01/10/2013'),
(5123221, '7/8/2013'),
(5774753, '7/18/2013'),
(3005451, '2/18/2013'),
(7518818, '05/29/2013'),
(9656985, '6/20/2013'),
(2438101, '7/17/2013'),
(1437052, '7/25/2013'),
(9133874, '4/25/2013'),
(7007375, '6/19/2013'),
(3178181, '5/24/2013')
und inaktive
CREATE TABLE Inactive (
ID int,
Effect_Date datetime)
INSERT INTO Inactive VALUES
(1209774, '10/12/2012'),
(5419494, '10/12/2012'),
(4853049, '10/9/2012'),
(1453678, '5/23/2013'),
(1111554, '7/16/2012'),
(5564128, '2/15/2013'),
(1769234, '7/16/2012')
Willkommen, ein paar Tipps: Die Leute wollen sehen, was Sie bisher versucht haben, was nicht funktioniert (Fehler die Sie erhalten oder Beispielausgabe, die nicht wie gewünscht ist). Sample gewünschte Ausgabe ist auch hilfreich, da es oft einfacher ist, Daten zu verstehen als Beschreibung der Daten. Sie können auch SQL Fiddle, um Ihren Probentisch (e) verwenden, für die Menschen zu fragen: http://sqlfiddle.com/#!3 –
@steoleary Ich bin sehr neu, so, damit ich für Beispiele gesucht online. Ich habe nur etwas Code hinzugefügt, den ich versucht habe zusammen zu stellen. – Matty34
@goatco danke. Ich werde es mir ansehen. Ich bin sehr neu und ich habe viele online gesehen. – Matty34