데이터가있는 테이블이 있는데, ID와 연결 일 수를 제공하는 쿼리를 작성하고 싶습니다.이 예제에 대한 쿼리 작성
ID 1에 대한 예를 들어 나에게 2 회 (2016년 9월 20일, 2016년 9월 22일)
데이터가있는 테이블이 있는데, ID와 연결 일 수를 제공하는 쿼리를 작성하고 싶습니다.이 예제에 대한 쿼리 작성
ID 1에 대한 예를 들어 나에게 2 회 (2016년 9월 20일, 2016년 9월 22일)
SELECT id, COUNT(DISTINCT convert(date, startTime)) as noOfDays
FROM your_table
GROUP BY id
을 당신은 단지 startdate
열을 기반으로 일을 확인하는 경우를 줄 , 아래 쿼리를 사용하십시오.
SELECT COUNT(DISTINCT cast (StartTime as date)) DaysCount
FROM YourTable
Where ID=1
질문은 매우 명확하지 않습니다하지만 당신은 단순히이
Select id,TotalCount=Count(id) from YourTable group by id
알처럼 할 수있다, 난 당신이 고려 여러 연결을 고려하여 모든 ID에 대한 연결 일의 총 수를 얻으려고 생각 (모두 하나의 연결로 간주됩니다). 또한 연결은 EndTime에 따라 며칠이 걸릴 수 있으며이 경우이 일수도 계산해야합니다.
이 시도 :
declare @tt table(id int, StartTime datetime, EndTime datetime)
insert into @tt values
(1, '2016-09-20 13:01', '2016-09-20 13:30')
,(1, '2016-09-20 14:20', '2016-09-20 16:09')
,(1, '2016-09-20 17:20', '2016-09-20 17:51')
,(1, '2016-09-22 23:20', '2016-09-22 23:40')
,(2, '2016-09-20 14:20', '2016-09-20 16:09')
,(2, '2016-09-20 16:01', '2016-09-20 16:09')
,(3, '2016-09-20 14:20', '2016-09-20 14:56')
,(3, '2016-09-23 19:20', '2016-09-23 20:09')
,(4, '2016-09-20 22:20', '2016-09-20 23:00')
select * from @tt
;with cte1 as
(
select ID, convert(Date, StartTime) as StartDate
, convert(Date, max(EndTime)) as EndDate
from @tt
group by id, convert(Date, StartTime)
),
cte2 as
(
select *, DATEDIFF(day, StartDate, EndDate) +1 as DaysCount
from cte1
)
select id, sum(DaysCount) as DaysCount
from cte2
group by id
select id,count(distinct(dbo.GetDateInt(StartTime))) NoofDays from table_name group by id
참고 : SQL 서버에서 수행이 쿼리를 2012 getDateInt()
데이터베이스 기능입니다. 그것은 2016-09-23과 같은 날짜 만 반환합니다.
당신이 묻는 것이 명확하지 않습니다. 며칠이나 날짜가 필요합니까? 마지막 행의 EndTime이 9 월 25 일이면 어떨까요? 그건 그렇고, 당신이 지금까지 시도한 것을 보여 주어야 StackOverflow는 숙제 해결사가 아닙니다. http://stackoverflow.com/help/how-to-ask – Andrew
샘플 테이블 데이터를 이미지로 게시하지 마십시오 .. 그리고 다른 점은 StartTime이 2016-09-20이고 EndTime이 2016-09 인 경우 id가 1 인 경우입니다. -20이면 1 또는 2로 계산해야합니까? – Wanderer