Я не уверен, какой правильный способ сформулировать этот вопрос, но я надеюсь, что это имеет смысл. У меня есть запрос:Считайте записи по кварталам по диапазону дат
SELECT
c.ID,
c.Name,
c.DateAdded,
c.LastContact
FROM
computers AS c
WHERE
LENGTH(DateAdded) > 1
ORDER BY
DateAdded ASC;
возвращающий:
ID Name DateAdded LastContact
1 MUTHER 9/2/2012 1:23 5/17/2016 13:57
5 VGER 12/19/2012 10:44 5/17/2016 13:56
7 HELPER 1/13/2013 18:09 5/17/2016 13:57
9 JARVIS 1/15/2013 0:28 7/31/2015 0:20
12 PHLFS1 1/17/2013 18:41 2/17/2013 13:37
Я могу считать дату, когда компьютеры были добавлены Quarter с этим запросом:
SELECT
YEAR(DateAdded) AS YEAR,
QUARTER(DateAdded) AS QUARTER,
COUNT(ComputerID) AS 'added-during-qtr'
FROM
computers
WHERE
LENGTH(DateAdded) > 1
GROUP BY
YEAR(DateAdded),
QUARTER(DateAdded)
ORDER BY
YEAR(DateAdded),
QUARTER(DateAdded)
что дает мне когда были активированы:
year quarter added-during-qtr
2012 3 1
2012 4 1
2013 1 3
Но НЕ, если они были активны в течение квартала или нет, что то, что я действительно ищу:
year quarter active-during-qtr
2012 3 1
2012 4 2
2013 1 5
2013 2 4
Я не уверен, если я задать вопрос правильный путь или нет, но в конце дня, я хочу подсчитать количество компьютеров, которые были «активны» между DateAdded и LastContact, отсортированные по годам и кварталам. В идеале без необходимости вручную добавлять диапазоны в оператор case. Заранее спасибо.
Как вы знаете, если компьютер был «активным» тогда? Есть ли еще один столбец, который вы не показываете в своем сообщении прямо сейчас, или он определен по-другому? Нужно знать эту информацию, чтобы помочь вам в решении вопроса. – Fuzzzzel
Я думаю, что @Fuzzzzel. Должна быть «Деактивировать» колонку, а также другую мудрую я не могу объяснить, как после активации 5 компьютеров на 1 квартал 2013 года, а затем в следующем квартале только 4 –
вы ищете ** 2013 2 4 **, но данных для 2013 нет -Q2 в вашем столе – Alex