Note that this sandbox is a draft and still being modified.
/***********************************************************************
----------------------------------------------
LOGIC Testing Sandbox for TSQL Challenge 24
Copyright © beyondrelational.com
----------------------------------------------
Notes:
1. Copy this template and paste in your SSMS Query editor
2. Insert your query (solution for TSQL Challenge 24)
in the Section between "Insert your query below"
and "Insert your query above"
3. Run the whole batch. If you see
"Invalid Results...Failed!" getting printed in output
window, there is something wrong in the query.
Revision History:
Rev 00 - 21 June 2010 - Lutz Müller - Initial Release
***********************************************************************/
/*
Create a wrapper procedure around the solution
*/
IF OBJECT_ID('tempdb..#TestSolution') IS NOT NULL BEGIN
DROP PROCEDURE #TestSolution
END
GO
CREATE PROCEDURE #TestSolution AS
BEGIN
IF OBJECT_ID('TC24_Schedules','U') IS NOT NULL BEGIN
DROP TABLE TC24_Schedules
END
;
CREATE TABLE TC24_Schedules (
SchID INT IDENTITY PRIMARY KEY,
EmpName VARCHAR(10),
Activity VARCHAR(15),
StartTime SMALLDATETIME,
Duration VARCHAR(5)
)
;
SET IDENTITY_INSERT TC24_Schedules ON
INSERT INTO TC24_Schedules (SchID,EmpName,Activity,StartTime,Duration)
SELECT 100, 'Tricky','24hr meeting', '20100201 00:00','23:59' UNION ALL
SELECT 102, 'Tricky1','triple block1', '20100201 08:50','00:25' UNION ALL
SELECT 103, 'Tricky1','triple block2', '20100201 09:20','00:05' UNION ALL
SELECT 104, 'Tricky1','triple block3', '20100201 09:25','00:10' UNION ALL
SELECT 99, 'Tricky1','one_day_off', '20100131 10:00','00:20' UNION ALL
SELECT 98, 'Tricky1','one_year_off', '20090201 10:30','00:50' UNION ALL
SELECT 105, 'Tricky1','at_the_hr_cont1', '20100201 12:30','00:15' UNION ALL
SELECT 106, 'Tricky1','at_the_hr_cont2', '20100201 12:45','00:25' UNION ALL
SELECT 107, 'Tricky1','bef_the_hr_end1', '20100201 13:25','00:15' UNION ALL
SELECT 108, 'Tricky1','bef_the_hr_end2', '20100201 13:40','00:20' UNION ALL
SELECT 109, 'Tricky','orphane_sched', '20100201 13:40','00:20' UNION ALL
SELECT 110, 'Tricky_a','same_act_dif_em', '20100201 15:00','00:30' UNION ALL
SELECT 111, 'Tricky_b','same_act_dif_em', '20100201 15:00','00:30' UNION ALL
SELECT 112, 'Tricky1','FAQ12_test1', '20100201 23:30','00:20' UNION ALL
SELECT 113, 'Tricky2','FAQ12_test2', '20100201 23:30','00:10'
SET IDENTITY_INSERT TC24_Schedules OFF
IF OBJECT_ID('TC24_ActivityLog','U') IS NOT NULL BEGIN
DROP TABLE TC24_ActivityLog
END
;
CREATE TABLE TC24_ActivityLog (
LogID INT IDENTITY PRIMARY KEY,
EmpName VARCHAR(10),
Activity VARCHAR(15),
StartTime SMALLDATETIME,
Duration VARCHAR(5)
)
;
SET IDENTITY_INSERT TC24_ActivityLog ON
INSERT INTO TC24_ActivityLog (LogID,EmpName,Activity,StartTime,Duration)
SELECT 1000, 'Tricky','24hr meeting', '20100201 00:00','00:30' UNION ALL
SELECT 1001, 'Tricky','24hr meeting', '20100201 00:30','00:30' UNION ALL
SELECT 1002, 'Tricky','24hr meeting', '20100201 01:00','00:30' UNION ALL
SELECT 1003, 'Tricky','24hr meeting', '20100201 01:30','00:30' UNION ALL
SELECT 1004, 'Tricky','24hr meeting', '20100201 02:00','00:30' UNION ALL
SELECT 1005, 'Tricky','24hr meeting', '20100201 02:30','00:30' UNION ALL
SELECT 1006, 'Tricky','24hr meeting', '20100201 03:00','00:30' UNION ALL
SELECT 1007, 'Tricky','24hr meeting', '20100201 03:30','00:30' UNION ALL
SELECT 1008, 'Tricky','24hr meeting', '20100201 04:00','00:30' UNION ALL
SELECT 1009, 'Tricky','24hr meeting', '20100201 04:30','00:30' UNION ALL
SELECT 1010, 'Tricky','24hr meeting', '20100201 05:00','00:30' UNION ALL
SELECT 1011, 'Tricky','24hr meeting', '20100201 05:30','00:30' UNION ALL
SELECT 1012, 'Tricky','24hr meeting', '20100201 06:00','00:30' UNION ALL
SELECT 1013, 'Tricky','24hr meeting', '20100201 06:30','00:30' UNION ALL
SELECT 1014, 'Tricky','24hr meeting', '20100201 07:00','00:30' UNION ALL
SELECT 1015, 'Tricky','24hr meeting', '20100201 07:30','00:30' UNION ALL
SELECT 1016, 'Tricky','24hr meeting', '20100201 08:00','00:30' UNION ALL
SELECT 1017, 'Tricky','24hr meeting', '20100201 08:30','00:30' UNION ALL
SELECT 1018, 'Tricky','24hr meeting', '20100201 09:00','00:30' UNION ALL
SELECT 1019, 'Tricky','24hr meeting', '20100201 09:30','00:30' UNION ALL
SELECT 1020, 'Tricky','24hr meeting', '20100201 10:00','00:30' UNION ALL
SELECT 1021, 'Tricky','24hr meeting', '20100201 10:30','00:30' UNION ALL
SELECT 1022, 'Tricky','24hr meeting', '20100201 11:00','00:30' UNION ALL
SELECT 1023, 'Tricky','24hr meeting', '20100201 11:30','00:30' UNION ALL
SELECT 1024, 'Tricky','24hr meeting', '20100201 12:00','00:30' UNION ALL
SELECT 1025, 'Tricky','24hr meeting', '20100201 12:30','00:30' UNION ALL
SELECT 1026, 'Tricky','24hr meeting', '20100201 13:00','00:30' UNION ALL
SELECT 1027, 'Tricky','24hr meeting', '20100201 13:30','00:30' UNION ALL
SELECT 1028, 'Tricky','24hr meeting', '20100201 14:00','00:30' UNION ALL
SELECT 1029, 'Tricky','24hr meeting', '20100201 14:30','00:30' UNION ALL
SELECT 1030, 'Tricky','24hr meeting', '20100201 15:00','00:30' UNION ALL
SELECT 1031, 'Tricky','24hr meeting', '20100201 15:30','00:30' UNION ALL
SELECT 1032, 'Tricky','24hr meeting', '20100201 16:00','00:30' UNION ALL
SELECT 1033, 'Tricky','24hr meeting', '20100201 16:30','00:30' UNION ALL
SELECT 1034, 'Tricky','24hr meeting', '20100201 17:00','00:30' UNION ALL
SELECT 1035, 'Tricky','24hr meeting', '20100201 17:30','00:30' UNION ALL
SELECT 1036, 'Tricky','24hr meeting', '20100201 18:00','00:30' UNION ALL
SELECT 1037, 'Tricky','24hr meeting', '20100201 18:30','00:30' UNION ALL
SELECT 1038, 'Tricky','24hr meeting', '20100201 19:00','00:30' UNION ALL
SELECT 1039, 'Tricky','24hr meeting', '20100201 19:30','00:30' UNION ALL
SELECT 1040, 'Tricky','24hr meeting', '20100201 20:00','00:30' UNION ALL
SELECT 1041, 'Tricky','24hr meeting', '20100201 20:30','00:30' UNION ALL
SELECT 1042, 'Tricky','24hr meeting', '20100201 21:00','00:30' UNION ALL
SELECT 1043, 'Tricky','24hr meeting', '20100201 21:30','00:30' UNION ALL
SELECT 1044, 'Tricky','24hr meeting', '20100201 22:00','00:30' UNION ALL
SELECT 1045, 'Tricky','24hr meeting', '20100201 22:30','00:30' UNION ALL
SELECT 1046, 'Tricky','24hr meeting', '20100201 23:00','00:30' UNION ALL
SELECT 1047, 'Tricky','24hr meeting', '20100201 23:30','00:29' UNION ALL
SELECT 1051, 'Tricky1','triple block1','20100201 08:30','00:10' UNION ALL
SELECT 1052, 'Tricky1','triple block1','20100201 09:00','00:20' UNION ALL
SELECT 1053, 'Tricky1','triple block2','20100201 09:00','00:05' UNION ALL
SELECT 1054, 'Tricky1','triple block3','20100201 09:00','00:05' UNION ALL
SELECT 1055, 'Tricky1','triple block3','20100201 09:30','00:05' UNION ALL
SELECT 1056, 'Tricky1','one_day_off','20100201 09:30','00:01' UNION ALL
SELECT 1057, 'Tricky1','one_day_off','20100201 10:00','00:19' UNION ALL
SELECT 1058, 'Tricky1','one_year_off','20100201 10:00','00:01' UNION ALL
SELECT 1059, 'Tricky1','one_year_off','20100201 10:30','00:20' UNION ALL
SELECT 1060, 'Tricky1','at_the_hr_cont1', '20100201 12:30','00:15' UNION ALL
SELECT 1061, 'Tricky1','at_the_hr_cont2', '20100201 12:30','00:15' UNION ALL
SELECT 1062, 'Tricky1','at_the_hr_cont2', '20100201 13:00','00:10' UNION ALL
SELECT 1063, 'Tricky1','bef_the_hr_end1', '20100201 13:00','00:05' UNION ALL
SELECT 1064, 'Tricky1','bef_the_hr_end1', '20100201 13:30','00:10' UNION ALL
SELECT 1065, 'Tricky1','bef_the_hr_end2', '20100201 13:30','00:20' UNION ALL
SELECT 1066, 'Tricky1','orphaned_act', '20100201 14:00','00:10' UNION ALL
SELECT 1067, 'Tricky_a','same_act_dif_em', '20100201 15:00','00:30' UNION ALL
SELECT 1068, 'Tricky_b','same_act_dif_em', '20100201 15:00','00:30' UNION ALL
SELECT 1069, 'Tricky1','FAQ12_test1', '20100201 23:30','00:20' UNION ALL
SELECT 1070, 'Tricky2','FAQ12_test2', '20100201 23:30','00:10'
SET IDENTITY_INSERT TC24_ActivityLog OFF
;
/* Insert your query below */
/* Insert your query above */
END
GO
SET NOCOUNT ON
/*
Start the testing phase
*/
DECLARE @x TABLE(
AutoID INT IDENTITY,
Date DATETIME,
EmpName VARCHAR(50),
Activity VARCHAR(50),
SchSt VARCHAR(10),
SchDur VARCHAR(10),
ActSt VARCHAR(10),
ActDur VARCHAR(10)
)
-- Execute the code and
INSERT @x EXEC #TestSolution
DECLARE @z TABLE(
AutoID INT IDENTITY,
Date DATETIME,
EmpName VARCHAR(50),
Activity VARCHAR(50),
SchSt VARCHAR(10),
SchDur VARCHAR(10),
ActSt VARCHAR(10),
ActDur VARCHAR(10)
)
INSERT INTO @z(Date, EmpName, Activity, SchSt, SchDur, ActSt, ActDur)
SELECT '2010-02-01','Tricky','24hr meeting','00:00','23:59','00:00','23:59'
UNION ALL
SELECT '2010-02-01','Tricky_a','same_act_dif_em','15:00','00:30','15:00','00:30'
UNION ALL
SELECT '2010-02-01','Tricky_b','same_act_dif_em','15:00','00:30','15:00','00:30'
UNION ALL
SELECT '2010-02-01','Tricky1','triple block1','08:50','00:25','08:50','00:30'
UNION ALL
SELECT '2010-02-01','Tricky1','triple block2','09:20','00:05','09:20','00:05'
UNION ALL
SELECT '2010-02-01','Tricky1','triple block3','09:25','00:10','09:25','00:10'
UNION ALL
SELECT '2010-02-01','Tricky1','at_the_hr_cont1','12:30','00:15','12:30','00:15'
UNION ALL
SELECT '2010-02-01','Tricky1','at_the_hr_cont2','12:45','00:25','12:45','00:25'
UNION ALL
SELECT '2010-02-01','Tricky1','bef_the_hr_end1','13:25','00:15','13:25','00:15'
UNION ALL
SELECT '2010-02-01','Tricky1','bef_the_hr_end2','13:40','00:20','13:40','00:20'
UNION ALL
SELECT '2010-02-01','Tricky1','FAQ12_test1','23:30','00:20','23:30','00:20'
UNION ALL
SELECT '2010-02-01','Tricky2','FAQ12_test2','23:30','00:10','23:30','00:10'
-- Match the output with expected result.
IF EXISTS(
(SELECT * FROM @x EXCEPT SELECT * FROM @z)
UNION ALL
(SELECT * FROM @z EXCEPT SELECT * FROM @x))
BEGIN
PRINT 'Invalid Results...Failed!'
END ELSE BEGIN
PRINT 'Congratulations...Passed!'
END