Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Среднее значение за 2 и 3 картал со сравнением  [new]
RuRed
Member

Откуда: Москва
Сообщений: 12
Уважаемые коллеги! Столкнулся с трудностью

Есть таблица shoot

CREATE TABLE SHOOTING (
S_ID INT NOT NULL PRIMARY KEY,
S_time DATETIME NOT NULL,
People INT NOT NULL,--ID человека
point INT NOT NULL);


В записи имеются данные о том кто и сколько заработал очков.
Стрельбы проходили 6 месяцев подряд. Необходимо сравнить среднее значение за второй квартал и среднее значение за 3 квартал

Пример ожидаемого результата:
People AVG_2квартал AVG_3квартал
Белов 13 21
Бухаров 16 25
Грибов 19 28

Получается только вывести отдельно за 2-й квартал или за 3 квартал но вместе все никак

--AVG за второй квартал
SELECT people, AVG(min_point) AS AVG_shoot2
FROM SHOOTING
WHERE S_time >= '20190401' AND S_time <'20190701'
GROUP BY People)x,
--AVG за третий квартал
SELECT people, AVG(min_point) AS AVG_shoot3
FROM SHOOTING
WHERE S_time >= S_time >= '20190701' AND S_time <'20191001'
GROUP BY People)x,

Уважаемые коллеги пожалуйста подскажите!
1 июл 19, 15:41    [21918275]     Ответить | Цитировать Сообщить модератору
 Re: Среднее значение за 2 и 3 картал со сравнением  [new]
Focha
Member

Откуда: Москва
Сообщений: 496
select *
from (
		SELECT	 people
				,AVG(case when S_time >= '20190401' AND S_time <'20190701' then min_point end ) AS AVG_shoot2
				,AVG(case when S_time >= '20190701' AND S_time <'20191001' then min_point end ) AS AVG_shoot3
		FROM SHOOTING
		WHERE S_time >= '20190401' AND S_time <'20191001'
		GROUP BY people
	 ) as x
1 июл 19, 15:48    [21918283]     Ответить | Цитировать Сообщить модератору
 Re: Среднее значение за 2 и 3 картал со сравнением  [new]
RuRed
Member

Откуда: Москва
Сообщений: 12
Большое спасибо за помощь!
1 июл 19, 19:36    [21918481]     Ответить | Цитировать Сообщить модератору
 Re: Среднее значение за 2 и 3 картал со сравнением  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
SELECT people, [Quarter]=DATEPART(QUARTER,S_time), [AVG]=AVG(min_point)
FROM SHOOTING
WHERE S_time >= '20190401' AND S_time <'20191001'
GROUP BY people,DATEPART(QUARTER,S_time)
ORDER BY people,DATEPART(QUARTER,S_time);
1 июл 19, 20:42    [21918516]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить