У меня есть таблица с записями для каждого телефонного звонка. Я хочу создать матрицу, где у меня средняя скорость звонка за 30-минутный сегмент времени в течение дня по дням недели. Каждый вызов имеет время начала, которое дату/времяКурс SQL - AVG по времени дня и дня недели
т.е.
Я хочу, чтобы отобразить пн-вс, как заголовки строк и 30 мин интервалами, как заголовки столбцов. Контент - это среднее количество вызовов за каждый день (Пн-Вс) в каждом конкретном 30-минутном сегменте. Это то, что я получил, но это не то, что я хочу. Он суммирует количество вызовов по временному сегменту, и я не могу определить, как получить средние значения.
Я надеюсь, что некоторые из них могут мне точку в правильном направлении -
SQL не то, что я часто использую так нежна :-)
set dateformat dmy
SET DATEFIRST 1 -- Start with Monday
SELECT datepart(dw,starttime) as 'Day',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS 'Midnight-12:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '12:30am-1am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '1am-1:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '1:30am-2am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '2am-2:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '2:30am-3am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '3am-3:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '3:30am-4am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '4am-4:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '4:30am-5am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '5am-5:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '5:30am-6am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '6am-6:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '6:30am-7am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '7am-7:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '7:30am-8am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '8:30am-9am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '9am-9:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '10:30am-11am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '11am-11:30am',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '11:30am-Noon',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS 'Noon-12:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '1pm-1:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '1:30pm-2pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '2pm-2:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '2:30pm-3pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '3pm-3:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '4:30pm-4pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '4pm-5:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '5:30pm-6pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '6pm-6:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '6:30pm-7pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '7pm-7:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '7:30pm-8pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '8pm-8:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '8:30pm-9pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '9pm-9:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '9:30pm-10pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '10pm-10:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '10:30pm-11pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) > 30) THEN 1 ELSE 0 END) AS '11pm-11:30pm',
SUM(CASE WHEN (DATEPART(hour,StartTime) = 7 and DATEPART(Minute,StartTime) <= 30) THEN 1 ELSE 0 END) AS '11:30pm-Midnight'
FROM [dbo].[CallList]
where StartTime>'1/6/2015'
and StartTime<'30/6/2015'
GROUP BY datepart(dw,starttime)
ORDER BY datepart(dw,starttime)