Win Rate
Percentage of qualified opportunities that result in closed won deals, measuring sales effectiveness
Overview
Win Rate measures the percentage of sales opportunities that result in closed won deals out of all qualified opportunities that reach a decision. This fundamental sales metric reflects the effectiveness of your sales team, sales process, and product-market fit.
A strong win rate indicates effective sales execution, compelling value propositions, and competitive positioning. It's a key indicator of sales team performance and an important factor in sales forecasting accuracy.
Win Rate = (Number of Closed Won Deals / Total Closed Deals) × 100
30%+
Excellent
20-30%
Good
15-20%
Average
<15%
Needs Improvement
Industry Context
Win rates vary significantly by industry, deal size, and sales model. Enterprise B2B typically sees 15-25%, while transactional B2B may achieve 25-35%. Consider your specific context when benchmarking.
Why It Matters
- Sales Effectiveness: Direct measure of sales team's ability to close deals
- Forecast Accuracy: Essential for reliable pipeline and revenue forecasting
- Resource Allocation: Helps prioritize high-probability opportunities
- Competitive Position: Indicates how well you compete against alternatives
- Process Optimization: Identifies areas for sales process improvement
- Rep Performance: Benchmarks individual and team performance
How to Measure It
Calculate win rate by dividing closed won deals by total closed deals (won + lost), with analysis across multiple dimensions for optimization insights.
Basic Win Rate Analysis
-- Calculate win rates with comprehensive segmentation
WITH opportunity_outcomes AS (
SELECT
opportunity_id,
opportunity_name,
deal_size,
lead_source,
industry,
assigned_rep,
created_date,
closed_date,
stage,
close_reason,
competitor,
CASE
WHEN deal_size < 25000 THEN 'Small'
WHEN deal_size < 100000 THEN 'Medium'
ELSE 'Large'
END as deal_category
FROM opportunities
WHERE stage IN ('Closed Won', 'Closed Lost')
AND created_date >= '2024-01-01'
AND closed_date IS NOT NULL
)
SELECT
'Overall' as segment,
COUNT(*) as total_opportunities,
SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) as won_deals,
SUM(CASE WHEN stage = 'Closed Lost' THEN 1 ELSE 0 END) as lost_deals,
ROUND(100.0 * SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) / COUNT(*), 1) as win_rate_percent,
ROUND(AVG(CASE WHEN stage = 'Closed Won' THEN deal_size END), 0) as avg_won_deal_size,
ROUND(SUM(CASE WHEN stage = 'Closed Won' THEN deal_size ELSE 0 END), 0) as total_won_revenue
UNION ALL
SELECT
deal_category as segment,
COUNT(*) as total_opportunities,
SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) as won_deals,
SUM(CASE WHEN stage = 'Closed Lost' THEN 1 ELSE 0 END) as lost_deals,
ROUND(100.0 * SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) / COUNT(*), 1) as win_rate_percent,
ROUND(AVG(CASE WHEN stage = 'Closed Won' THEN deal_size END), 0) as avg_won_deal_size,
ROUND(SUM(CASE WHEN stage = 'Closed Won' THEN deal_size ELSE 0 END), 0) as total_won_revenue
FROM opportunity_outcomes
GROUP BY deal_category
UNION ALL
SELECT
lead_source as segment,
COUNT(*) as total_opportunities,
SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) as won_deals,
SUM(CASE WHEN stage = 'Closed Lost' THEN 1 ELSE 0 END) as lost_deals,
ROUND(100.0 * SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) / COUNT(*), 1) as win_rate_percent,
ROUND(AVG(CASE WHEN stage = 'Closed Won' THEN deal_size END), 0) as avg_won_deal_size,
ROUND(SUM(CASE WHEN stage = 'Closed Won' THEN deal_size ELSE 0 END), 0) as total_won_revenue
FROM opportunity_outcomes
GROUP BY lead_source
ORDER BY win_rate_percent DESC;
Competitive Win Rate Analysis
-- Analyze win rates by competitor presence
WITH competitive_analysis AS (
SELECT
opportunity_id,
stage,
deal_size,
competitor,
CASE
WHEN competitor IS NULL OR competitor = '' THEN 'No Competition'
ELSE competitor
END as competition_type
FROM opportunities
WHERE stage IN ('Closed Won', 'Closed Lost')
AND created_date >= '2024-01-01'
),
win_loss_by_competitor AS (
SELECT
competition_type,
COUNT(*) as total_deals,
SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) as won_deals,
SUM(CASE WHEN stage = 'Closed Lost' THEN 1 ELSE 0 END) as lost_deals,
ROUND(100.0 * SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) / COUNT(*), 1) as win_rate,
ROUND(AVG(deal_size), 0) as avg_deal_size
FROM competitive_analysis
GROUP BY competition_type
)
SELECT
competition_type,
total_deals,
won_deals,
lost_deals,
win_rate,
avg_deal_size,
RANK() OVER (ORDER BY win_rate DESC) as win_rate_rank
FROM win_loss_by_competitor
WHERE total_deals >= 5 -- Minimum sample size
ORDER BY win_rate DESC;
Win Rate Trends and Patterns
-- Track win rate trends over time
WITH monthly_win_rates AS (
SELECT
DATE_TRUNC('month', closed_date) as month,
assigned_rep,
COUNT(*) as total_deals,
SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) as won_deals,
ROUND(100.0 * SUM(CASE WHEN stage = 'Closed Won' THEN 1 ELSE 0 END) / COUNT(*), 1) as win_rate
FROM opportunities
WHERE stage IN ('Closed Won', 'Closed Lost')
AND closed_date >= '2023-01-01'
AND assigned_rep IS NOT NULL
GROUP BY 1, 2
HAVING COUNT(*) >= 3 -- Minimum deals for statistical relevance
),
trend_analysis AS (
SELECT
month,
assigned_rep,
total_deals,
won_deals,
win_rate,
LAG(win_rate) OVER (PARTITION BY assigned_rep ORDER BY month) as prev_month_win_rate,
AVG(win_rate) OVER (
PARTITION BY assigned_rep
ORDER BY month
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) as three_month_avg_win_rate
FROM monthly_win_rates
)
SELECT
month,
assigned_rep,
total_deals,
win_rate,
ROUND(three_month_avg_win_rate, 1) as three_month_avg,
ROUND(win_rate - prev_month_win_rate, 1) as month_over_month_change,
CASE
WHEN win_rate >= 25 THEN 'High'
WHEN win_rate >= 15 THEN 'Medium'
ELSE 'Low'
END as performance_tier
FROM trend_analysis
WHERE month >= CURRENT_DATE - INTERVAL '12 months'
ORDER BY month DESC, win_rate DESC;
Calculation Guidelines
Include only qualified opportunities that reached a decision. Exclude deals that are still open, withdrawn, or never properly qualified to get accurate win rate calculations.
Best Practices
1. Consistent Opportunity Definition
- Define clear qualification criteria (BANT, MEDDIC, etc.)
- Only include deals that reached a genuine decision
- Exclude unqualified leads from win rate calculations
- Maintain consistent stage definitions across team
2. Segmentation Analysis
- Track by deal size and complexity
- Analyze by lead source and channel
- Monitor competitive win rates
- Segment by industry and use case
3. Win Rate Improvement Strategies
- Better Qualification: Focus on winnable opportunities
- Competitive Intelligence: Understand and counter competitor positioning
- Value Articulation: Strengthen business case and ROI messaging
- Sales Training: Improve objection handling and closing skills
4. Loss Analysis
- Conduct systematic win/loss interviews
- Track common loss reasons and patterns
- Identify coachable vs. structural issues
- Share insights across sales team
5. Forecasting Integration
- Use historical win rates for probability scoring
- Adjust forecasts based on deal characteristics
- Factor in competitive intelligence
- Update win rate assumptions regularly