SQL-запрос для подсчета времени для определенного столбца - PullRequest
0 голосов
/ 07 апреля 2009

ОК. Я использую MS SQL, и у меня есть таблица с такими значениями:

ID     Date     Radio     Time
111    4/1/09    1        3:00:00
111    4/1/09    2        4:00:00
111    4/1/09    3       14:00:00
111    4/1/09    1       15:00:00
111    4/1/09    3       16:00:00
222    4/1/09    2        2:00:00
222    4/1/09    1        5:00:00
222    4/1/09    1       19:00:00
333    4/1/09    1        3:00:00
333    4/1/09    2        5:00:00
333    4/1/09    2        13:00:00
333    4/1/09    3        17:00:00

Хорошо, мне нужен запрос, где:

window 1 < 12:00
13 < window 2 < 15:00
window 3 > 16:00

Чтобы вернуть суммы:

           Window1     Window2    Window3  
Radio 1:     3           0          2
Radio 2:     3           1          0
Radio 3:     0           1          2         

Я пытался использовать count (), но не могу заставить их правильно соединиться на нужном «радио» Есть предложения?

Ответы [ 2 ]

8 голосов
/ 07 апреля 2009
SELECT [Radio],
    SUM(CASE WHEN [Time] < 12 THEN 1 ELSE 0 END) AS Window1,
    SUM(CASE WHEN [Time] >= 12 AND [TIME] < 15 THEN 1 ELSE 0 END) AS Window2,
    SUM(CASE WHEN [Time] >= 16 THEN 1 ELSE 0 END) AS Window3
FROM [Table]
GROUP BY [Radio]

Отрегулируйте <= / <и> = /> в зависимости от ситуации; Вы не были очень конкретны в этом вопросе.

Кроме того, ваше первое условие было window 1 > 12. Я предполагаю, что вы имеете в виду window 1 < 12.

3 голосов
/ 07 апреля 2009

Возможно, я обманул и использовал SQL Server 2008, используя тип данных [time (7)] для столбца времени, который я назвал «временем». Это даст вам те же результаты, о которых вы просили.

select radio, SUM(case when thetime <= '12:00:00' then 1 else 0 end) Window1
    , SUM(case when thetime between '13:00:00' and '15:59:59' then 1 else 0 end) Window2
    , SUM(case when thetime >= '15:00:00' then 1 else 0 end) Window3
from stackoverflow
GROUP BY radio
ORDER BY radio

Надеюсь, это поможет,

Calvin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...