SQL获取每日注册用户总数
Posted
技术标签:
【中文标题】SQL获取每日注册用户总数【英文标题】:SQL Get the total count of registered user in day by day 【发布时间】:2018-10-08 04:54:30 【问题描述】:你能帮我构造一个查询吗?场景是这样的,我想获取每天注册用户的总价值。
【问题讨论】:
提供您的预期输出和样本数据 您的样本数据在哪里? 您好!我已经更新了我的帖子。我包括该样本和输出数据 抱歉输出有误,我可能每天都想要一个星期。示例 本周一至周日 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tagpostgresql
, 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 Magento 1 - SQL获取每个客户的销售和订单总数
如何从两个表中获取总数并使用该值进行计算? (sql, asp)