Я пытаюсь найти, постоянно ли человек (id = A3) постоянно участвует в программе не менее пяти месяцев или более в конкретном году (2013 год). Любое предложение будет оценено по достоинству. Мои данные выглядят следующим образом:Как подсчитать строки в SQL Server 2012?
ответ
Вы просто использовать group by
и условное выражение:
select id,
(case when count(ActiveMonthYear) >= 5 then 'YES!' else 'NAW' end)
from table t
where ListOfTheMonths between '201301' and '201312'
group by id;
EDIT:
Я полагаю, "непрерывно" не просто означает любой пять месяцы. Для этого существуют разные способы. Я хотел разность номеров строк подходить
select distinct id
from (select t.*,
(row_number() over (partition by id order by ListOfTheMonths) -
count(ActiveMonthYear) over (partition by id order by ListOfTheMonths)
) as grp
from table t
where ListOfTheMonths between '201301' and '201312'
) t
where ActiveMonthYear is not null
group by id, grp
having count(*) >= 5;
Разница в подзапросе постоянна для групп последовательных активных месяцев. Затем используется группировка. Результатом является список всех идентификаторов, соответствующих этим критериям. Вы можете добавить where
для определенного идентификатора (сделать это в подзапросе).
Кстати, это написано с использованием select distinct
и group by
. Это один из редких случаев, когда эти два используются вместе. У одного id
может быть два периода в пять месяцев в том же году. Нет причин включать этого человека дважды в результирующий набор.
@ Гордон .. порядок здесь не важен? –
Возможно, это правильный ответ. Однако я подумал. Возможно, пользователю необходимо войти в систему на 5 месяцев? –
@vkp. , , Я неправильно понял проблему, когда я впервые ответил на это. –
- 1. Как подсчитать повторяющиеся строки в SQL Server 2012?
- 2. Как подсчитать строку в SQL SERVER 2012 с помощью sys.partitions
- 3. Безопасность уровня строки в SQL Server 2012
- 4. SQL Server 2012 Trigger
- 5. Как подсчитать отчетливый столбец в SQL Server
- 6. SQL server 2012 SP_HELPTEXT дополнительные строки выпуск
- 7. SQL Server 2012 slow
- 8. Параметры командной строки SQL Server 2012
- 9. SQL Server: как подсчитать строки в пределах заданного диапазона дат?
- 10. SQL Server 2012: выбор SO # из строки
- 11. Open SQL Server 2012 из командной строки
- 12. SQL-запрос, добавляющий строки в result-sql server 2012
- 13. Подпроцессы SQL Server 2012
- 14. SQL Server 2012 Constraint
- 15. SQL Server 2012 Count
- 16. Установка SQL Server 2012
- 17. Как добавить столбец номера строки в SQL Server 2012
- 18. Как рассчитать процент каждой строки в SQL Server 2012?
- 19. SQL Server 2012 - Hanging
- 20. SQL Server 2012 Память
- 21. Ошибка SQl Server 2012
- 22. SQL Server 2012 JOIN
- 23. SQL Server 2012 Trigger
- 24. Удаление SQL Server 2012
- 25. SQL Server 2012 Разбивка
- 26. SQL Server 2012 Pivot
- 27. SQL Server 2012 Query
- 28. SQL Server 2012 IsDate()
- 29. SQL Server 2012 AlwaysOn
- 30. SQL Server 2012 smo
Как ваши данные выглядят? вы забыли добавить это в вопрос? –
Что вы подразумеваете под непрерывностью? –
Привет, Гордон, постоянное значение без месячного разрыва в течение как минимум пяти месяцев. – poshan