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

Откуда:
Сообщений: 14
Всем примет
Нужно просуммировать данные, за каждое число
Проблема в том, что дата имеет вид 2017-04-14 23:59:59.000
и код не работает
MSSQL база
 SELECT  [StoreId] AS Магазин
          , [DateStarted] AS Дата
          ,SUM([RecordCount]) AS Сумма_кликов
  FROM [TSDscancity].[dbo].[TSDReassessment] 
  WHERE (StoreId='40003') and  (DateStarted='20170414')  
    GROUP BY  DateStarted , StoreId
    ORDER BY DateStarted 
15 апр 17, 08:58    [20404093]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
mirotwor42
Member

Откуда:
Сообщений: 14
mirotwor42,
Те Он должен выдать:
Магазин Дата Сумма_кликов
40003 2017-04-14 999
15 апр 17, 09:39    [20404121]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
mirotwor42,

отрежьте время.
сконвертируйте в дату, потом группируйте
15 апр 17, 10:14    [20404154]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Massa52
Member

Откуда:
Сообщений: 380
DateStarted >='20170414' AND <'20170415'
15 апр 17, 12:32    [20404308]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Massa52
Member

Откуда:
Сообщений: 380
SELECT  [StoreId] AS Магазин
          , [DateStarted] AS Дата
          ,SUM([RecordCount]) AS Сумма_кликов
  FROM [TSDReassessment] 
  WHERE (StoreId='40003') and  (DateStarted>='20170414' AND DateStarted < '20170415')  
    GROUP BY  CAST(DateStarted AS date), StoreId
    ORDER BY DateStarted 
15 апр 17, 12:47    [20404331]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
mirotwor42
Member

Откуда:
Сообщений: 14
Massa52,

Правильнее, но все равно спасибо)

SELECT TOP 1000 [StoreId] AS Магазин
      , SUM([RecordCount]) AS Сумма_кликов
  FROM [TSDscancity].[dbo].[TSDReassessment] 
  WHERE (StoreId='40003') and  ( (DateStarted > '2017-04-14 00:00:00.000') and (DateStarted < '2017-04-15 24:00:00.000'))   
  GROUP BY   StoreId 
15 апр 17, 15:03    [20404502]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Massa52
Member

Откуда:
Сообщений: 380
Предыдущее неверно,
Может и это тоже не годится :(
;WITH c AS
(SELECT  [StoreId]
        ,CAST(DateStarted AS date) AS D
        ,[RecordCount]   
 FROM [TSDReassessment]
 WHERE (StoreId='40003') and  (DateStarted>='20170414' AND DateStarted < '20170415')
)   
SELECT c.StoreId, c.D  
          ,sum([RecordCount]) S
FROM c 
GROUP BY D, c.StoreId
ORDER BY D
15 апр 17, 15:03    [20404506]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Massa52
Member

Откуда:
Сообщений: 380
mirotwor42,
Для одного дня самое то. А если несколько дней?
15 апр 17, 15:07    [20404516]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
mirotwor42
Member

Откуда:
Сообщений: 14
Massa52,

Но не совсем верно
Он должен выдавать примерно:

Те Он должен выдать:
-----------+----------------+------------------
Магазин | Дата | Сумма_кликов
-----------+----------------+------------------
40003 | 2017-04-14 | 5649
40003 | 2017-04-15 | 2549
40003 | 2017-04-16 | 45449
40003 | 2017-04-17 | 9469
-----------+----------------+------------------
15 апр 17, 15:10    [20404518]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
mirotwor42
Member

Откуда:
Сообщений: 14
Massa52,

Гениально, спасибо.

А можете прокомментировать написано?)
15 апр 17, 16:34    [20404601]     Ответить | Цитировать Сообщить модератору
 Re: Нужно просуммировать данные, за каждое число  [new]
Massa52
Member

Откуда:
Сообщений: 380
mirotwor42,
;WITH c AS
(SELECT  [StoreId]
        ,CAST(DateStarted AS date) AS D
        ,[RecordCount]   
 FROM [TSDReassessment]
 WHERE (StoreId='40003') and  (DateStarted>='20170414' AND DateStarted < '20170415')
) 

Эта часть запроса формирует такой же набор данных но с кастрирированной DateStarted и в D уже только дата без времени ну и заодно фильтрует - where.
И уже опираясь на эти данные можно группировать по дате и подсчитывать клики. Что и делает вторая часть запроса.
16 апр 17, 04:19    [20405217]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить