Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL获取每天的注册用户总数_Mysql_Sql_Pivot - Fatal编程技术网

Mysql SQL获取每天的注册用户总数

Mysql SQL获取每天的注册用户总数,mysql,sql,pivot,Mysql,Sql,Pivot,你能帮我构造一个查询吗。场景是这样的,我想获得每天注册用户的总价值。假设您的注册时间戳存储在创建日期时间字段和名为say user的表中: Select count(*) from tableName Where registered = true Group by Date SELECT created_at,COUNT(*) as `total registration` FROM `user` GROUP BY (DATE(`user`.`created_at`)) 前

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

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

Select  count(*) 
from    tableName
Where   registered = true 
Group by Date
SELECT created_at,COUNT(*) as `total registration` FROM `user` GROUP BY (DATE(`user`.`created_at`))

前面的答案既不包括
where
部分,也不输出dayname

这应该既能做到这一点,又能产生您想要的结果:

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

我终于得到了今天和过去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
选择
a、 JourneyName,
a、 BonuName,
a、 地位,
a、 “时间戳”,
a、 中,
计数(当DATEDIFF(DD,a.“Timestamp”,GETDATE())=0,则为1,否则为空结束)为“Day_1”,
将DATEDIFF(DD,a.“Timestamp”,GETDATE())=1,然后1,否则为空结束)计数为“Day_2”,
将DATEDIFF(DD,a.“Timestamp”,GETDATE())=2,然后1,否则为空结束)计数为“Day_3”,
将DATEDIFF(DD,a.“Timestamp”,GETDATE())=3,然后1,否则为空结束)计数为“Day_4”,
将DATEDIFF(DD,a.“Timestamp”,GETDATE())=4,然后1,否则为空结束)计数为“Day_5”,
将DATEDIFF(DD,a.“Timestamp”,GETDATE())=5,然后1,否则为空结束)计数为“Day_6”,
计数(DATEDIFF(DD,a.“Timestamp”,GETDATE())=6,则为1,否则为空结束)为“Day_7”
从…起
表名a
哪里
a、 “Timestamp”>=DATEADD(DD,-7,GETDATE())

和一个“时间戳”提供您的预期输出和样本数据您的样本数据在哪里?您好!我已经更新了我的帖子。我包括样本和输出数据,担心输出是错误的,我希望它一天一天,也许一周。示例本周一至周日您使用的产品是什么?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品
postgresql
oracle
sqlserver
db2
。。。