Я учитель школы, очень новый для MS SQL-сервера. Все предлагают попробовать этот сайт. Вот оно!% участников, которые сохраняются в течение шести месяцев
Я пытаюсь написать запросы для тестирования различных типов результатов для участия в академической программе. Существует несколько различных способов расчета этого измерения результатов, которое я хотел бы попробовать. Результат, который я пытаюсь рассчитать: Какова% участников, которые сохраняются в течение шести месяцев после программы? Я тестирую различные способы определения участника и разных временных диапазонов. Есть 4 вопроса, которые я пытаюсь создать. К сожалению, я должен использовать для разных таблиц: Посещаемость, статус, деактивированный, неактивный. Я включил выборочные данные из каждого ниже
запросов
- Участник определяется как все, что присутствовал класс по крайней мере два раза в неделю в течение 6 месяцев (всего 181 дней), начиная с 1 июля 2012 года и до июня 30-го 2013 года, поэтому продолжительность финансового года. Если участник deenrolled или неактивный, они отбрасываются.
- Участник определяется как все, что присутствовал класс по крайней мере два раза в неделю в течение 6 месяцев (181 дней общего), начиная с 1 января 2013 г. Если участник deenrolled или становится неактивный они отбрасываются.
- Участник определяется как все, что присутствовал класс по крайней мере два раза в неделю не начиная с 1 января 2013 года до сегодняшнего дня
- Участник определяется как регистрации даты начала студента, пока они не deenrolled или становятся неактивными.
Участник (числитель) участник/все студенты, которые служили (знаменатель)
4 выхода запроса Ищу разные версии этого:
Пример
Participants Served Percent_Served
75 100 75%
Я побеседовал с различными версиями запроса ниже
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
и
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
Любая помощь программирования для этих запросов очень ценится.
Ниже приведены примеры/примеры наборов данных.
Attendence_date - это дата, когда учащийся участвовал в одном классе.
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')
Это - регистрационный номер.
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')
Адрес: Дата начала регистрации.
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')
И неактивным
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')
Добро пожаловать, пару советов: Люди любят видеть, что вы пробовали до сих пор, что не работает (ошибки вы получаете или выводите вывод, который не такой, какой вы хотите). Пример полезной информации также полезен, так как часто легче понять данные, чем описание данных. Вы также можете использовать SQL Fiddle для настройки вашей таблицы образцов для запросов: http://sqlfiddle.com/#!3 –
@steoleary Я очень новый, поэтому я искал примеры в Интернете. Я просто добавил в какой-то код, который я пытался перечислить. – Matty34
@goatco спасибо. Я это проверю. Я очень новый, и я искал много вариантов в Интернете. – Matty34