Sql 如何计算工作日数?
我在SQL Server 2008中有一个表,其中包含以下数据:Sql 如何计算工作日数?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在SQL Server 2008中有一个表,其中包含以下数据: user ,number of request, date number of request user1, ID1139151, 2017-03-15 13:10:01.000 user1, ID1139152, 2017-03-13 14:31:05.000 user2, ID1139153, 2017-03-16 10:38:08.000 user2, ID1139154, 2017-03-16 09:26:04.0
user ,number of request, date number of request
user1, ID1139151, 2017-03-15 13:10:01.000
user1, ID1139152, 2017-03-13 14:31:05.000
user2, ID1139153, 2017-03-16 10:38:08.000
user2, ID1139154, 2017-03-16 09:26:04.000
user2, ID1139155, 2017-03-17 18:09:15.000
user2, ID1139156, 2017-03-17 20:14:29.000
user2, ID1139157, 2017-03-28 11:18:18.000
借助SQL查询,帮助我查找每个用户的天数总和
Result:
user, date number of request
user1, 2
user2, 3
创建数据的脚本:
CREATE TABLE Mytable (
[user] varchar(50) NOT NULL,
[number of request] varchar(15) NOT NULL,
[date_number_of_request] datetime NOT NULL, )
INSERT INTO Mytable
VALUES
('user1','ID1139151','2017-03-15 13:10:01.000'),
('user1','ID1139152','2017-03-13 14:31:05.000'),
('user2','ID1139153','2017-03-16 10:38:08.000'),
('user2','ID1139154','2017-03-16 09:26:04.000'),
('user2','ID1139155','2017-03-17 18:09:15.000'),
('user2','ID1139156','2017-03-17 20:14:29.000'),
('user2','ID1139157','2017-03-28 11:18:18.000');
使用count(distinct col)
并使用dateadd(day,datediff(day,0,[date\u number\u of\u request]),0)截断datetime to date
:
使用convert(日期,[date\u请求的编号])进行相同的查询。
rextester演示:
返回:
+-------+------------------+
| user | DaysWithRequests |
+-------+------------------+
| user1 | 2 |
| user2 | 3 |
+-------+------------------+
使用count(distinct col)
并使用dateadd(day,datediff(day,0,[date\u number\u of\u request]),0)截断datetime to date
:
使用convert(日期,[date\u请求的编号])进行相同的查询。
rextester演示:
返回:
+-------+------------------+
| user | DaysWithRequests |
+-------+------------------+
| user1 | 2 |
| user2 | 3 |
+-------+------------------+
也许可以这样做:
SELECT users, COUNT(DISTINCT CAST(date_number_of_request AS date))
FROM mytable
GROUP BY users
也许可以这样做:
SELECT users, COUNT(DISTINCT CAST(date_number_of_request AS date))
FROM mytable
GROUP BY users
似乎您想要为每个用户在
date\u number\u of\u request
列中统计不同日期的数量
select user, count(distinct convert(date, date_number_of_request))
from myTable
group by user
似乎您想要为每个用户在
date\u number\u of\u request
列中统计不同日期的数量
select user, count(distinct convert(date, date_number_of_request))
from myTable
group by user
加上1对于示例数据,继续尝试包括您尝试过的任何尝试,还有一种方法是向数据库中添加。这可用于过滤非工作日。除非您将银行假日存储在某个位置,否则无法识别它们。加1对于示例数据,请继续尝试包括您尝试过的任何尝试,还有一种方法是向数据库中添加。这可用于过滤非工作日。除非您将银行假日存储在某个地方,否则无法识别它们。