It's Nothing but merged version of both your queries.
For Question #1
WITH TESTNUMBER AS
(SELECT TESTER.STAFF_NO, TESTER.TEST_REF, PERIOD. DATE_OF_TEST, TESTSLOT.SLOT_TIME,
ROW NUMBER() OVER (PARTITION BY TESTER.STAFF_NO ORDER BY TESTER.STAFF_NO DESC, PERIOD.DATE_OF_TEST DESC,
TESTSLOT.SLOT_TIME DESC)
AS RowNumber
FROM dB1.TEST_EVENT TESTER
INNER JOIN dB1.PERIOD PERIOD ON TESTER.PERIOD_ID=PERIOD.PERIOD_ID
INNER JOIN dB1.TEST_ SLOT_TIME TESTSLOT ON TESTER.SLOT_TIME_ID=TESTSLOT.SLOT_TIME_ID)
WHERE TESTER.STAFF_NO in (405405, 366255) AND
(PERIOD.DATE_OF_TEST>={ts '2013-08-01 00:00:00'} AND
PERIOD.DATE_OF_TEST<={ts '2013-08-10 00:00:00'})
SELECT * FROM TESTNUMBER
WHERE RowNumber BETWEEN 1 AND 10
ORDER BY STAFF_NO,RowNumber
Question #2
WITH TESTNUMBER AS
(
SELECT TESTER.STAFF_NO, TESTER.TEST_REF, PERIOD. DATE_OF_TEST, TESTSLOT.SLOT_TIME,
ROW NUMBER() OVER (PARTITION BY TESTER.STAFF_NO ORDER BY TESTER.STAFF_NO DESC, PERIOD.DATE_OF_TEST DESC,
TESTSLOT.SLOT_TIME DESC)
AS RowNumber
FROM dB1.TEST_EVENT TESTER
INNER JOIN dB1.PERIOD PERIOD ON TESTER.PERIOD_ID=PERIOD.PERIOD_ID
INNER JOIN dB1.TEST_ SLOT_TIME TESTSLOT ON TESTER.SLOT_TIME_ID=TESTSLOT.SLOT_TIME_ID)
WHERE TESTER.STAFF_NO in (
SELECT TESTER.STAFF_NO FROM
FROM dB1.TEST_EVENT TESTER
INNER JOIN dB1.PERIOD PERIOD
ON TESTER.PERIOD_ID = PERIOD.PERIOD_ID
INNER JOIN dB1.TEST_ SLOT_TIME TESTSLOT
ON TESTER.SLOT_TIME_ID = TESTSLOT.SLOT_TIME_ID)
WHERE (PERIOD.DATE_OF_TEST >= {ts '2013-08-01 00:00:00'}
AND PERIOD.DATE_OF_TEST <= {ts '2013-08-10 00:00:00'})
GROUP BY TESTER.STAFF_NO
HAVING count(TESTER.STAFF_NO)>=10
)
AND (PERIOD.DATE_OF_TEST>={ts '2013-08-01 00:00:00'}
AND PERIOD.DATE_OF_TEST<={ts '2013-08-10 00:00:00'}
)
SELECT * FROM TESTNUMBER
WHERE RowNumber BETWEEN 1 AND 10
ORDER BY STAFF_NO,RowNumber