| prep window | tenders | avg bids | median bids | single bidder | tender ids |
|---|---|---|---|---|---|
|
10-19 days
|
19
|
2.79
|
2
|
5
|
143415, 144471, 144476, 144555, 146863, 151019, 151080, 151178, 153192, 153292, 153433, 153570, 153631, 154274, 155433, 156048, 157384, 157387, 157474
|
|
20-29 days
|
6
|
14.67
|
2.5
|
1
|
144497, 148738, 150902, 152877, 155963, 156355
|
|
30+ days
|
3
|
3.33
|
3
|
0
|
133703, 144117, 148991
|
WITH t AS (
SELECT
tender_id,
procedure_type,
try_cast(days_to_prepare AS DOUBLE) AS days_to_prepare,
try_cast(total_bids AS DOUBLE) AS total_bids,
try_cast(award_amount AS DOUBLE) AS award_amount,
general_agreement
FROM xlsx_inventory_v3_4b022d33_5
WHERE try_cast(days_to_prepare AS DOUBLE) IS NOT NULL
AND try_cast(total_bids AS DOUBLE) IS NOT NULL
)
SELECT
CASE
WHEN days_to_prepare < 10 THEN '<10 days'
WHEN days_to_prepare < 20 THEN '10-19 days'
WHEN days_to_prepare < 30 THEN '20-29 days'
ELSE '30+ days'
END AS prep_window,
count(*) AS tenders,
round(avg(total_bids), 2) AS avg_bids,
median(total_bids) AS median_bids,
sum(CASE WHEN total_bids=1 THEN 1 ELSE 0 END) AS single_bidder,
string_agg(tender_id, ', ' ORDER BY tender_id) AS tender_ids
FROM t
GROUP BY 1
ORDER BY min(days_to_prepare);