with relief_shifts_sub as (
    select 
    store_id,
    shift_date,
    shift_id,
    shift_period,
    required_rider_count,
    published_at
    from relief_shifts
    where shift_date >= '2025-08-15'
    and shift_date < '2025-08-18'
    and shift_status = 'filled'
),

shift_invite_responses_sub as (
    select 
    shift_id,
    rider_id
    from(
        select
        shift_id,
        rider_id,
        invited_at,
        responded_at,
        response_status,
        row_number()over(partition by shift_id, rider_id order by invited_at) rn
        from shift_invite_responses
    ) sub
    where response_status = 'accepted'
    and responded_at is not null
    and timestampdiff(second, invited_at, responded_at)/3600 <=2
    and rn = 1
),


base as (
    select
    r.store_id,
    r.shift_date,
    r.shift_id,
    r.shift_period,
    r.required_rider_count,
    count(s.rider_id) accepted_in_2h_rider_count,
    round(count(s.rider_id) / r.required_rider_count, 2) acceptance_rate,
    r.published_at
    from relief_shifts_sub r
    left join shift_invite_responses_sub s on r.shift_id = s.shift_id
    group by r.store_id, r.shift_date, r.shift_id, r.shift_period, r.required_rider_count
),

base_rn as (
    select
    shift_id,
    row_number()over(partition by store_id, shift_date order by acceptance_rate desc, 
    accepted_in_2h_rider_count desc, published_at, shift_id) rn
    from base
)

select 
store_id,
shift_date,
shift_id,
shift_period,
required_rider_count,
accepted_in_2h_rider_count,
acceptance_rate
from base join base_rn using (shift_id)
where rn = 1
order by shift_date, store_id, shift_id