SQL Получить общее количество зарегистрированных пользователей в день за днем - PullRequest
0 голосов
/ 08 октября 2018

Можете ли вы помочь мне построить запрос.Сценарий таков: я хочу получать общую стоимость зарегистрированных пользователей каждый день.

Ответы [ 4 ]

0 голосов
/ 13 ноября 2018

Я наконец-то получил правильные данные за сегодня и за последние 7 дней.Пожалуйста, обратитесь к следующему запросу.

SELECT 
a.JourneyName,
a.BonusName,
a.Status,
a."Timestamp",
a.MID,
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 0 THEN 1 ELSE NULL END) as "Day_1",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 1 THEN 1 ELSE NULL END) as "Day_2",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 2 THEN 1 ELSE NULL END) as "Day_3",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 3 THEN 1 ELSE NULL END) as "Day_4",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 4 THEN 1 ELSE NULL END) as "Day_5",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 5 THEN 1 ELSE NULL END) as "Day_6",
COUNT(CASE WHEN DATEDIFF(DD, a."Timestamp", GETDATE()) = 6 THEN 1 ELSE NULL END) as "Day_7"
FROM
    TableName a
WHERE
a."Timestamp" >= DATEADD(DD, -7, GETDATE())
AND a."Timestamp" <= GETDATE()
GROUP BY``
      a.JourneyName, a.BonusName, a.Status, a."Timestamp", a.MID

Общее количество в день, где День_1 сегодня, День_2 вчера и так далее.

0 голосов
/ 08 октября 2018

Предполагая, что ваша временная метка регистрации хранится в поле даты-времени create_at и в таблице с именем скажем user:

SELECT created_at,COUNT(*) as `total registration` FROM `user` GROUP BY (DATE(`user`.`created_at`))
0 голосов
/ 08 октября 2018

Предыдущие ответы не охватывают часть where и не выводят имя дня.

Это должно сделать и то, и другое, что вы хотите:

create table #data (
    reg_id int,
    reg_email nvarchar(255),
    reg_date datetimeoffset(7)
)

insert into #data(reg_id, reg_email, reg_date) 
VALUES
(1, 'a', '2018-10-01'),
(2, 'b', '2018-10-01'),
(3, 'c', '2018-10-02'),
(4, 'd', '2018-10-03'),
(5, 'e', '2018-10-01'),
(6, 'f', '2018-10-02'),
(7, 'g', '2018-10-04'),
(8, 'h', '2018-10-05'),
(9, 'i', '2018-10-05'),
(10, 'j', '2018-10-06')

SELECT count(*), datename(dw, reg_date) from #data
where datepart(week, reg_date) = 40
group by reg_date

drop table #data

при условии, что вы используете sql server больше или равно 2008!

0 голосов
/ 08 октября 2018
Select  count(*) 
from    tableName
Where   registered = true 
Group by Date
...