запрос расходов клиента - PullRequest
1 голос
/ 05 апреля 2011

Необходимо создать запрос, показывающий, сколько клиенты тратят деньги в неделю, месяц, квартал, 6 месяцев и год на ежедневную онлайн-игру. Существует поле для создания даты (datetime), когда один клиент входит в игру.

Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 05 апреля 2011

Возможно, что-то вроде этого.

declare @T table (CreatedDate datetime, MoneySpent int)

insert into @T values
('20101231', 5),
('20100101', 10),
('20100102', 20),
('20100103', 30),
('20110104', 40),
('20110105', 50),
('20110106', 60),
('20110107', 70)

-- per year
select
  sum(MoneySpent) Spent,
  year(CreatedDate) [Year]
from @T
group by year(CreatedDate)

-- per month
select
  sum(MoneySpent) Spent,
  year(CreatedDate) [Year],
  month(CreatedDate) [Month]
from @T
group by year(CreatedDate), month(CreatedDate)

-- per half year
select
  sum(MoneySpent) Spent,
  year(CreatedDate) [Year],
  case when month(CreatedDate) <= 6 then 'First' else 'Second' end [HalfYear]
from @T
group by year(CreatedDate), case when month(CreatedDate) <= 6 then 'First' else 'Second' end

-- per quarter
select
  sum(MoneySpent) Spent,
  year(CreatedDate) [Year],
  ((month(CreatedDate)-1) % 4)+1 [Quarter]
from @T
group by year(CreatedDate), ((month(CreatedDate)-1) % 4)+1

-- per week
select
  sum(MoneySpent) Spent,
  year(CreatedDate) [Year],
  datepart(iso_week, CreatedDate) [Week]
from @T
group by year(CreatedDate), datepart(iso_week, CreatedDate)

Результат

Spent       Year
----------- -----------
65          2010
220         2011

Spent       Year        Month
----------- ----------- -----------
60          2010        1
220         2011        1
5           2010        12

Spent       Year        HalfYear
----------- ----------- --------
60          2010        First
220         2011        First
5           2010        Second

Spent       Year        Quarter
----------- ----------- -----------
60          2010        1
220         2011        1
5           2010        4

Spent       Year        Week
----------- ----------- -----------
220         2011        1
5           2010        52
60          2010        53
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...