have a locations table that contains 3 types of records (see below). I only need to SELECT record_type = 'G' rows.
I want to wrap the data in a loop ( ie 5 times) but how can I randomly shuffle the ENTIRE rows, by location_id, so they appear in a different order with each iteration of the loop? Perhaps, sticking the rows into an array and shuffling the array?
Note, I don't want to shuffle the columns, I want the row kept in tact. In the future more locations maybe added.
CREATE TABLE locations AS
SELECT level AS location_id,
'Door ' || level AS location_name,
CASE round(dbms_random.value(1,3))
WHEN 1 THEN 'A'
WHEN 2 THEN 'T'
WHEN 3 THEN 'G'
END AS location_type
FROM dual
CONNECT BY level <= 25;
SELECT * from tour_detail
Order by tour_id, tour_time
TOUR_ID TOUR_TIME LOCATION_ID
1 06212020 00:10:25 2
1 06212020 00:21:05 18
1 06212020 00:30:33 11
1 06212020 00:40:51 17
1 06212020 00:52:13 4
1 06212020 01:01:42 2
1 06212020 01:07:52 11
We have an access control system when you slide your card it records card_num, location_id, access_date in MMDDYYY HH24:MI:SS format.
Some wanted to create a guard tour system. That compares the access_date to the tour_detail detail date. If within a certain criteria say + or - 2 minutes that means the guard was on time, if GT or LT 2 minutes we log an early or late, if GT Or LT 5 minutes or no access_history record we log a no show.
I was asked to throw together some testing data. As you can see the tour_detail records contain MMDDYYYY HH24:MI:SS so I'm thinking about changing the tour_detail records to interval hour to minute but I have little experience working with that.