WITH t1 AS (
    SELECT shift_id,
           rider_id,
           MIN(invited_at) AS first_invite_time
    FROM shift_invite_responses
    GROUP BY shift_id,rider_id
),
t2 AS (
    SELECT t1.shift_id,
           t1.rider_id,
           s.invited_at,
           s.responded_at,
           s.response_status
    FROM t1 
    LEFT JOIN shift_invite_responses s ON t1.shift_id=s.shift_id AND t1.rider_id=s.rider_id AND t1.first_invite_time=s.invited_at
),
t3 AS (
    SELECT store_id,
           r.shift_id,
           r.shift_date,
           r.shift_period,
           r.published_at,
           MAX(required_rider_count) AS required_rider_count,
           COUNT(DISTINCT CASE WHEN response_status = 'accepted' AND responded_at IS NOT NULL AND responded_at<=DATE_ADD(invited_at,INTERVAL 2 HOUR) THEN rider_id END) AS  accepted_in_2h_rider_count,
            ROUND(COUNT(DISTINCT CASE WHEN response_status = 'accepted' AND responded_at IS NOT NULL AND responded_at<=DATE_ADD(invited_at,INTERVAL 2 HOUR)  THEN rider_id END)/MAX(required_rider_count),2) AS acceptance_rate
    FROM relief_shifts r 
    LEFT JOIN t2  ON r.shift_id=t2.shift_id
    WHERE shift_date BETWEEN '2025-08-15' AND '2025-08-17'
          AND shift_status = 'filled'
    GROUP BY store_id,r.shift_id,r.shift_date,shift_period,published_at
),
t4 AS (
    SELECT store_id,
           shift_date,
           shift_id,
           shift_period,
           required_rider_count,
           accepted_in_2h_rider_count,
           acceptance_rate,
           ROW_NUMBER() OVER(PARTITION BY store_id,shift_date ORDER BY acceptance_rate DESC,accepted_in_2h_rider_count DESC,published_at ASC,shift_id ASC) AS rnk
    FROM t3
)
SELECT store_id,
       shift_date,
       shift_id,
       shift_period,
       required_rider_count,
       accepted_in_2h_rider_count,
       acceptance_rate
FROM t4
WHERE rnk=1
ORDER BY shift_date ASC,store_id ASC,shift_id ASC