I have a sql table like this
occ_val time
0 2/1/2022 3:35:08 pm
1 2/1/2022 3:59:08 pm
2 2/1/2022 4:55:08 pm
3 2/1/2022 5:32:08 pm
2 3/1/2022 4:43:08 pm
3 4/1/2022 2:15:08 pm
How to I sort by each hour to get this:
time occ_val
2:00:00 pm 3
3:00:00 pm 1
4:00:00 pm 4
5:00:00 pm 3
Your help is very much appreciated :D
Here is a MySQL solution:
select DATE_FORMAT(min(time), '%h:00'),sum(occ_val) from tbl group by hour(time)
See https://www.db-fiddle.com/f/czudbp5zug6HxX4TFV26GT/0
SELECT * from YourTableName
ORDER BY (timeCol - FLOOR(CAST(timeCol AS float)) ASC
I have a timecard table like below. The HourType field represents whether the Employee entered the time ("0"), or whether their supervisor overrides or enters time ("1"). If a supervisor overrides time there is both a 0 record and a 1 record (4/8/2019). If a supervisor enters time the employee did not, then there is only a 1 record (4/12/2019). I need a query to find the total time for a given week. So in the below example the total hours for this week should be 39.5 hours.
RecordId EmployeeId StartDate EndDate StartTime EndTime HourCount HourType
1 100 4/8/2019 4/8/2019 9:00:00 AM 5:00:00 PM 8 0
2 100 4/8/2019 4/8/2019 9:00:00 AM 4:30:00 PM 7.5 1
3 100 4/9/2019 4/9/2019 9:00:00 AM 5:00:00 PM 8 0
4 100 4/10/2019 4/10/2019 9:00:00 AM 5:00:00 PM 8 0
5 100 4/11/2019 4/11/2019 9:00:00 AM 5:00:00 PM 8 0
6 100 4/12/2019 4/12/2019 9:00:00 AM 5:00:00 PM 8 1
Added 2nd data set that would include multiple records per day to account for lunch hours (4/11/2019). Total Hours for this dataset should be 37.5.
RecordId EmployeeId StartDate EndDate StartTime EndTime HourCount HourType
1 100 4/8/2019 4/8/2019 9:00:00 AM 5:00:00 PM 8 0
2 100 4/8/2019 4/8/2019 9:00:00 AM 4:30:00 PM 7.5 1
3 100 4/9/2019 4/9/2019 9:00:00 AM 5:00:00 PM 8 0
4 100 4/10/2019 4/10/2019 9:00:00 AM 5:00:00 PM 8 0
5 100 4/11/2019 4/11/2019 9:00:00 AM 12:00:00 PM 3 0
6 100 4/11/2019 4/11/2019 9:30:00 AM 12:00:00 PM 2.5 1
7 100 4/11/2019 4/11/2019 1:00:00 PM 5:00:00 PM 4 0
8 100 4/12/2019 4/12/2019 9:00:00 AM 5:00:00 PM 8 1
You seem to want:
select employeeId, sum(hourcount)
from (select t.*,
row_number() over (partition by employeeid, startdate, enddate order by hourtype desc) as seqnum
from t
) t
where seqnum = 1;
That is, if multiple records match emplyeeid, startdate, and enddate, then choose the override one.
This is my table data:
Fromdatetime Todatetime
2018-12-8 10:25 AM 2018-12-8 16:25 PM
2018-12-8 16:25 PM 2018-12-8 20:25 PM
2018-12-8 20:25 PM 2018-12-9 01:25 AM
2018-12-9 01:25 AM 2018-12-10 23:25 PM
Here is my list of parameter value:
2018-12-8 10:25 AM to 2018-12-9 10:25Am
2018-12-9 10:25 AM to 2018-12-10 10:25AM
For 1 parameter my output should be:
It should returned me 4 first row data Hours difference by substarcting fromdatetime and Todatetime
But in case of 4th row my hours should only calculate the difference of fromdatetime and Todatetime
Example result should be
Hours
6
4
5
9
So can you please help me to write this query
Are you simply looking for datediff()?
select datediff(hour, Fromdatetime, Todatetime) as num_hours
I have the following table with start and end dates:
dataid TS EndTS
1744 7/27/17 1:57:34 PM 7/27/2017 1:57:38 PM
1743 7/27/17 1:57:31 PM 7/27/2017 1:57:34 PM
1742 7/27/17 1:57:23 PM 7/27/2017 1:57:31 PM
1741 7/27/17 1:57:16 PM 7/27/2017 1:57:23 PM
1740 7/27/17 1:57:04 PM 7/27/2017 1:57:16 PM
1739 7/27/17 1:56:57 PM 7/27/2017 1:57:04 PM
1738 7/27/17 1:56:38 PM 7/27/2017 1:56:57 PM
I would like to get the date/time interval (in seconds) and then calculate a running total.
Here is what I have so far:
SELECT
[dataid] AS [dataid]
DateDiff("s", [TS],[EndTS]) AS [durationsec]
DSum("[durationsec]","[HX32]","[dataid] <=" & [dataid]) AS [add]
FROM [HX32];
I think the datediff() funtion is possibly causing formatting problems. With "[durationsec]" I get all nulls as a result, with [durationsec] I get the following results:
durationsec add
4 6896
3 5169
8 13776
7 12047
12 20640
7 12033
19 32642
I also tried cint(DateDiff("s", [TS],[EndTS])) No change.
I also tried passing durationsec to a table and running a seperate query. No change. (Also I would prefer to do this all in one query)
Here are the results I would like to achieve:
dataid TS EndTS durationsec add
1744 7/27/17 1:57:34 PM 7/27/2017 1:57:38 PM 4 60
1743 7/27/17 1:57:31 PM 7/27/2017 1:57:34 PM 3 56
1742 7/27/17 1:57:23 PM 7/27/2017 1:57:31 PM 8 53
1741 7/27/17 1:57:16 PM 7/27/2017 1:57:23 PM 7 45
1740 7/27/17 1:57:04 PM 7/27/2017 1:57:16 PM 12 38
1739 7/27/17 1:56:57 PM 7/27/2017 1:57:04 PM 7 26
1738 7/27/17 1:56:38 PM 7/27/2017 1:56:57 PM 19 19
Thanks, I'm a beginner.
Time is not seconds but integer days, so you could try:
SELECT
[dataid],
DateDiff("s", [TS], [EndTS]) AS [durationsec],
DSum("[EndTS]-[TS]", "[HX32]", "[dataid] <= " & [dataid] & "") * 86400 AS [add]
FROM
[HX32];
That said, June's method should work as well. If both fail, something else is going on.
SELECT dataid,
startts,
endts,
DATEDIFF("s", startts,endts) AS durationsec,
SUM(DATEDIFF("s", startts,endts)) OVER (ORDER BY endts ROWS UNBOUNDED PRECEDING) AS runningtotal
FROM durtab
ORDER BY 5 DESC;
Result:
dataid startts endts durationsec runningtotal
1744 2017-07-27 13:57:34.000 2017-07-27 13:57:38.000 4 60
1743 2017-07-27 13:57:31.000 2017-07-27 13:57:34.000 3 56
1742 2017-07-27 13:57:23.000 2017-07-27 13:57:31.000 8 53
1741 2017-07-27 13:57:16.000 2017-07-27 13:57:23.000 7 45
1740 2017-07-27 13:57:04.000 2017-07-27 13:57:16.000 12 38
1739 2017-07-27 13:56:57.000 2017-07-27 13:57:04.000 7 26
1738 2017-07-27 13:56:38.000 2017-07-27 13:56:57.000 19 19
DSum is looking at the [HX32] table or query to find a field named [durationsec]. It doesn't exist there.
SELECT
[dataid],
DateDiff("s",[TS],[EndTS]) AS [durationsec],
DSum("DateDiff('s',[TS],[EndTS])","[HX32]","[dataid] <=" & [dataid]) AS [add]
FROM [HX32];`
Note the use of apostrophes to delimit the 's' parameter in the nested DateDiff.
An alternative approach is to do the running sum in Report because textbox in report has a RunningSum property. Domain aggregate functions in queries can perform slowly in large datasets.
How to query in oracle SQL for the AND condition from the below table.
I want to query like where Start_date =something AND End_date=something
ID Start_date End_date STATUS USER
21 4/16/2010 11:00:00 PM 4/16/2010 11:59:00 PM PENDING TOM
22 4/18/2010 11:00:00 AM 4/18/2010 11:59:00 PM COMPLETED JACK
23 4/20/2010 11:00:00 PM 4/20/2010 11:59:00 PM PENDING JEFF
24 5/16/2010 11:00:00 PM 5/16/2010 11:59:00 PM STARTED MIKE
where start_date = '4/16/2010 11:00:00 PM' and end_date = '4/16/2010 11:59:00 PM'