I have a order table which happens to have a column of DataType "Datetime" which contains Date and Time of the arrival of product to the Company(customer) and i have multiple type of users their types are like: Employee, CompanyOwners(customers),Dispatchers..etc
I have managed to get the date range of orders against to the specific user who is the owner of the company using the following T-SQL query below:
declare @username varchar(130), @DateFrom varchar(10), @DateTo varchar(10)
set @username = 'chabow';set @DateFrom='4/01/2018';set @DateTo='6/30/2018'
;with cte as (
select count(o.ArrivalDate) as orders_count, cast(o.ArrivalDate as Date) as ArrivalDate
from view_MembershipUsers msu
inner join XrefCompanyUsers rfu on msu.UserName = rfu.UserName
inner join Company f on f.CompanyID = rfu.CompanyID
inner join orders o on o.CompanyID = f.CompanyID
where msu.UserName = @username and
(o.ArrivalDate >= @DateFrom and o.ArrivalDate <= @DateTo)
group by cast(o.ArrivalDate as Date)
)
select *,
(select max(orders_count)+2 from cte) as Total
from cte
order by ArrivalDate
What i actually need to retrieve is the Average hour of arrival of product along with the data i have retrieved using above query from selected date range. I am clueless to how i can get the average in hours from this date range without getting the date difference, because i need to read "date" of every row to get the most possible accurate average hour.
I have extracted some sample dates for ease in order for you guys to help me.
create table SelectedData
(ArrivalDate date, ActualDateTime datetime)
insert into SelectedData values
('2018-04-01','2018-04-01 20:45:00.000'),
('2018-04-04','2018-04-04 19:00:00.000'),
('2018-04-05','2018-04-05 14:00:00.000'),
('2018-04-05','2018-04-05 14:23:00.000'),
('2018-04-05','2018-04-05 18:30:00.000'),
('2018-04-06','2018-04-06 12:30:00.000'),
('2018-04-06','2018-04-06 18:08:00.000')
declare @DateFrom varchar(10), @DateTo varchar(10)
set @DateFrom='4/01/2018';set @DateTo='6/30/2018'
select *
from SelectedData
order by ArrivalDate
Thanks and regards.
Change your type to DateTime, and not date. Like this :
drop table SelectedData
create table SelectedData
(ArrivalDate date, ActualDateTime datetime)
insert into SelectedData values
('2018-04-01','2018-04-01 20:45:00.000'),
('2018-04-04','2018-04-04 19:00:00.000'),
('2018-04-05','2018-04-05 14:00:00.000'),
('2018-04-05','2018-04-05 14:23:00.000'),
('2018-04-05','2018-04-05 18:30:00.000'),
('2018-04-06','2018-04-06 12:30:00.000'),
('2018-04-06','2018-04-06 18:08:00.000')
declare @DateFrom varchar(10), @DateTo varchar(10)
set @DateFrom='4/01/2018';set @DateTo='6/30/2018'
select avg(datePart(hour, ActualDateTime))
from SelectedData
--order by ArrivalDate
And then get the datepart of hours from the date, and then the average of that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With