Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
在<;15分钟和15到30分钟的sql查询_Sql_Sql Server - Fatal编程技术网

在<;15分钟和15到30分钟的sql查询

在<;15分钟和15到30分钟的sql查询,sql,sql-server,Sql,Sql Server,表名称客户访问 CustomerId, phoneMacAddress, CreateDatetime 1002 1b:66:41:11:26:16 2017-07-17 07:33:31.300 1003 cb:45:85:25:2:0 2017-07-17 07:05:21.200 1004 3o:09:ab:1c:5:ab 2017-07-17 10:03:01.400 1002 1b:66:41:11:26:16

表名称客户访问

CustomerId, phoneMacAddress,  CreateDatetime 
1002        1b:66:41:11:26:16  2017-07-17 07:33:31.300
1003        cb:45:85:25:2:0    2017-07-17 07:05:21.200
1004        3o:09:ab:1c:5:ab   2017-07-17 10:03:01.400
1002        1b:66:41:11:26:16  2017-07-17 08:12:03.543
1002        1b:66:41:11:26:16  2017-07-17 08:12:03.543
1002        1b:66:41:11:26:16  2017-07-17 08:09:27.527
如何获取此格式的数据:

<15min      15-30min      >30min
1           4             0 
30min
1           4             0 
SQL SERVER的更新

#Last 15 mins
SELECT COUNT(CustomerId) FROM customer_visit WHERE CreateDatetime >= DateADD(mi, -15, CURRENT_TIMESTAMP) and CreateDatetime <= CURRENT_TIMESTAMP;

#Between 15 to 30 min
SELECT COUNT(CustomerId) FROM customer_visit WHERE CreateDatetime >= DateADD(mi, -30, CURRENT_TIMESTAMP) and CreateDatetime <= DateADD(mi, -15, CURRENT_TIMESTAMP);
#最后15分钟
从customer_Visition中选择COUNT(CustomerId),其中CreateDatetime>=DateADD(mi,-15,CURRENT_TIMESTAMP)和CreateDatetime=DateADD(mi,-30,CURRENT_TIMESTAMP)以及CreateDatetime=DATE_SUB(UTC_TIMESTAMP(),INTERVAL 15分钟)和CreateDatetime您可以使用
lead()
和一些日期/时间算法。大概是这样的:

select sum(case when next_cdt < dateadd(minute, 15, CreateDateTime) then 1
                else 0 end) as [<15min],
       sum(case when next_cdt >= dateadd(minute, 15, CreateDateTime) and
                     next_cdt < dateadd(minute, 30, CreateDateTime)
                then 1
                else 0 end) as [15-30min],
       sum(case when next_cdt >= dateadd(minute, 30, CreateDateTime) then 1
                else 0 end) as [<30min]  
from (select t.*,
             lead(CreateDatetime) over (order by CreateDatetime) as next_cdt
      from t
     ) t;
选择sum(当next_cdt=dateadd(分钟,30,CreateDateTime)时为1

else 0 end)as[描述如何计数?您的示例数据有3个不同的用户,但您仍然希望4个用户作为计数(15-30分钟)。我需要查询sql Server特定于产品的答案,以回答一个没有指定dbms的问题。至少告诉我们这是针对哪个产品的。
select sum(case when next_cdt < dateadd(minute, 15, CreateDateTime) then 1
                else 0 end) as [<15min],
       sum(case when next_cdt >= dateadd(minute, 15, CreateDateTime) and
                     next_cdt < dateadd(minute, 30, CreateDateTime)
                then 1
                else 0 end) as [15-30min],
       sum(case when next_cdt >= dateadd(minute, 30, CreateDateTime) then 1
                else 0 end) as [<30min]  
from (select t.*,
             lead(CreateDatetime) over (order by CreateDatetime) as next_cdt
      from t
     ) t;