Small. Fast. Reliable.
Choose any three.
*** 162,168 ****
           SUM(CASE WHEN y.Hours >= x.Hours 
              THEN 1 ELSE 0 END)>=(COUNT(*)/2)+1
  
! *: Oracle's wacky, nonstandard join syntax using (+) and (-):
  
        SELECT a1.a, a1.b, a2.a, a2.b
        FROM a1 LEFT JOIN a2 ON a2.b = a1.a
--- 162,168 ----
           SUM(CASE WHEN y.Hours >= x.Hours 
              THEN 1 ELSE 0 END)>=(COUNT(*)/2)+1
  
! *: Oracle's join syntax using (+) and (-):
  
        SELECT a1.a, a1.b, a2.a, a2.b
        FROM a1 LEFT JOIN a2 ON a2.b = a1.a