SQL获取每日注册用户总数

Posted

技术标签:

【中文标题】SQL获取每日注册用户总数【英文标题】:SQL Get the total count of registered user in day by day 【发布时间】:2018-10-08 04:54:30 【问题描述】:

你能帮我构造一个查询吗?场景是这样的,我想获取每天注册用户的总价值。

【问题讨论】:

提供您的预期输出和样本数据 您的样本数据在哪里? 您好!我已经更新了我的帖子。我包括该样本和输出数据 抱歉输出有误,我可能每天都想要一个星期。示例 本周一至周日 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag postgresql, oracle, sql-server, db2, ... 【参考方案1】:
Select  count(*) 
from    tableName
Where   registered = true 
Group by Date

【讨论】:

【参考方案2】:

假设您的注册时间戳存储在 created_at 日期时间字段和名为 say user 的表中:

SELECT created_at,COUNT(*) as `total registration` FROM `user` GROUP BY (DATE(`user`.`created_at`))

【讨论】:

【参考方案3】:

前面的答案既不涵盖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!

【讨论】:

【参考方案4】:

我终于得到了今天和过去 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 天是昨天,依此类推。

【讨论】:

以上是关于SQL获取每日注册用户总数的主要内容,如果未能解决你的问题,请参考以下文章

SQL获取总数并同时使用pivot

sql Magento 1 - SQL获取每个客户的销售和订单总数

SQL:用户计数的每日报告

如何从两个表中获取总数并使用该值进行计算? (sql, asp)

我正在尝试获取数据库中特定文件夹中的项目总数-SQL(HP ALM)[重复]

SQL 通过多个 DELETE 查询获取文件中已删除行的总数