Google Data Analytics Capstone · Track B

Cruise Industry
Post-Pandemic Recovery

A data-driven case study analyzing how Carnival Corporation and Royal Caribbean Group recovered from COVID-19 and what metrics predict future growth across the global cruise industry.

Analyst Logan Cytryn
Dataset 2019–2024 SEC Filings + CLIA
Companies Carnival Corp · Royal Caribbean
Tools SQL · R · Excel · JavaScript

Phase 1 — Ask

Business Questions

Defining the problem and what we're trying to learn from the data.

01
Recovery Trajectory
How quickly did passenger volumes and occupancy rates recover to pre-COVID levels for Carnival and RCL, and which company recovered faster?
02
Revenue Performance
Did revenue per passenger improve post-pandemic, and what does this suggest about pricing power and consumer demand for cruise vacations?
03
Future Outlook
Based on 2019–2024 trends in occupancy, passenger growth, and EBITDA, what does the data suggest about the industry's growth trajectory through 2026?

Phase 2 — Prepare

Data Sources & Methodology

All data sourced from publicly available, verified financial disclosures and industry reports.

Source 1
Carnival Corporation SEC Filings
Annual 10-K reports and quarterly 8-K earnings releases from SEC EDGAR (2019–2024). Fiscal year ends November 30. Metrics: passengers carried, occupancy %, total revenue, ticket and onboard revenue, adjusted EBITDA.
Source 2
Royal Caribbean Group Annual Results
Annual earnings press releases from RCL Investor Relations and SEC EDGAR (2019–2024). Fiscal year ends December 31. Same metrics as Carnival for direct comparison.
Source 3
CLIA 2025 State of the Cruise Industry
Cruise Lines International Association quarterly passenger data (2018–2024) for global industry context. 34.6 million ocean-going cruisers globally in 2024, up 9.3% from 2023.
Limitations
Data Considerations
Carnival fiscal year ends in November, creating slight timing differences vs RCL. 2020 figures reflect partial-year operations due to COVID-19 suspension. Some metrics estimated based on published ranges in earnings releases.

Phase 3 & 4 — Process & Analyze

Key Metrics at a Glance

2024 performance vs 2019 pre-pandemic baseline across both companies.

🚢
23.4M
Combined Passengers 2024
+8% vs 2019
🛏️
106%
Avg Occupancy 2024
Full recovery
💰
$41.5B
Combined Revenue 2024
+33% vs 2019
📈
$12.1B
Combined EBITDA 2024
+39% vs 2019
🎯
$1.79K
Avg Rev per Passenger (CCL)
+10% vs 2019
2023
Full Recovery Year
3 years post-COVID

Passengers Carried (Millions)

Annual passenger volume 2019–2024 by company

Carnival
Royal Caribbean

Occupancy Rate (%)

Industry benchmark: 100%+ indicates high-density sailings

Carnival
Royal Caribbean

Total Revenue ($B)

Annual revenue recovery trajectory vs 2019 baseline

Carnival
Royal Caribbean

Adjusted EBITDA ($B)

Profitability recovery — pandemic losses to record highs

Carnival
Royal Caribbean

Complete Dataset

Year Company Passengers (M) Occupancy % Revenue ($B) Ticket Rev ($B) Onboard Rev ($B) EBITDA ($B) Rev/Pax ($K) YoY Growth

Phase 3 — Process (SQL)

Data Processing with SQL

Key SQL queries used to clean, filter, and transform the raw dataset before analysis. Data was structured in a relational table called cruise_data with one row per company per year.

1. Create & Load Table

Define schema and load raw data from SEC filings and CLIA report.

-- Create the cruise data table
CREATE TABLE cruise_data (
  year              INT,
  company           VARCHAR(50),
  passengers_m      DECIMAL(5,2),
  occupancy_pct     INT,
  total_revenue_b   DECIMAL(6,2),
  ticket_revenue_b  DECIMAL(6,2),
  onboard_revenue_b DECIMAL(6,2),
  adj_ebitda_b      DECIMAL(6,2),
  net_yield_yoy_pct DECIMAL(5,2),
  notes             VARCHAR(100)
);

-- Sample insert (Carnival 2024)
INSERT INTO cruise_data VALUES (
  2024, 'Carnival', 14.0, 104,
  25.0, 14.9, 10.1, 6.1, 8.7,
  'Record revenues and occupancy'
);

2. Validate & Clean Data

Check for nulls, duplicates, and outliers before analysis.

-- Check for null values
SELECT *
FROM cruise_data
WHERE passengers_m IS NULL
   OR total_revenue_b IS NULL
   OR occupancy_pct IS NULL;

-- Check for duplicate records
SELECT year, company, COUNT(*) AS count
FROM cruise_data
GROUP BY year, company
HAVING COUNT(*) > 1;

-- Verify year range
SELECT MIN(year) AS first_year,
       MAX(year) AS last_year,
       COUNT(DISTINCT company) AS companies
FROM cruise_data;

3. Recovery Analysis

Compare 2024 vs 2019 baseline to measure full recovery.

-- Recovery vs pre-COVID baseline
SELECT
  a.company,
  b.passengers_m    AS passengers_2019,
  a.passengers_m    AS passengers_2024,
  ROUND((a.passengers_m - b.passengers_m)
    / b.passengers_m * 100, 1) AS pax_growth_pct,
  b.total_revenue_b AS revenue_2019,
  a.total_revenue_b AS revenue_2024,
  ROUND((a.total_revenue_b - b.total_revenue_b)
    / b.total_revenue_b * 100, 1) AS rev_growth_pct
FROM cruise_data a
JOIN cruise_data b
  ON a.company = b.company
WHERE a.year = 2024
  AND b.year = 2019
ORDER BY rev_growth_pct DESC;

4. Revenue Per Passenger

Calculate and rank revenue efficiency by company and year.

-- Revenue per passenger (efficiency metric)
SELECT
  year,
  company,
  total_revenue_b,
  passengers_m,
  ROUND(total_revenue_b / passengers_m, 3)
    AS rev_per_passenger_b,
  adj_ebitda_b,
  ROUND(adj_ebitda_b / total_revenue_b * 100, 1)
    AS ebitda_margin_pct
FROM cruise_data
WHERE year IN (2019, 2022, 2023, 2024)
ORDER BY year, company;

-- Avg revenue per passenger by company
SELECT company,
  ROUND(AVG(total_revenue_b / passengers_m), 3)
    AS avg_rev_per_passenger
FROM cruise_data
WHERE year BETWEEN 2022 AND 2024
GROUP BY company;

5. Occupancy Trend Analysis

Identify the year occupancy crossed back above 100% for each company.

-- When did each company hit 100% occupancy?
SELECT company,
  MIN(year) AS first_year_above_100pct
FROM cruise_data
WHERE occupancy_pct >= 100
  AND year > 2020
GROUP BY company;

-- Full occupancy trend
SELECT year, company, occupancy_pct,
  CASE
    WHEN occupancy_pct >= 100 THEN 'Fully Recovered'
    WHEN occupancy_pct >= 80  THEN 'Near Recovery'
    WHEN occupancy_pct >= 50  THEN 'Ramping Up'
    ELSE 'Severely Impacted'
  END AS recovery_status
FROM cruise_data
ORDER BY company, year;

6. YoY Growth Summary

Year-over-year passenger and revenue growth for the recovery period.

-- YoY growth using LAG window function
SELECT
  year, company,
  passengers_m,
  LAG(passengers_m) OVER (
    PARTITION BY company ORDER BY year
  ) AS prev_year_pax,
  ROUND(
    (passengers_m - LAG(passengers_m) OVER (
      PARTITION BY company ORDER BY year)
    ) / LAG(passengers_m) OVER (
      PARTITION BY company ORDER BY year
    ) * 100, 1
  ) AS yoy_pax_growth_pct,
  total_revenue_b,
  adj_ebitda_b
FROM cruise_data
ORDER BY company, year;

Phase 5 — Share

Key Findings

Four data-driven insights from the 2019–2024 cruise industry analysis.

01
Full Recovery by 2023 — Faster Than Expected
Both Carnival and RCL returned to pre-COVID passenger volumes and occupancy rates by 2023 — roughly 3 years post-shutdown. By 2024 both companies exceeded 2019 levels on every major metric, demonstrating the resilience of pent-up consumer demand for cruise travel.
02
Revenue Per Passenger Increased Post-Pandemic
Despite the disruption, revenue per passenger grew approximately 10% above 2019 levels by 2024 for Carnival and 13% for RCL. This suggests stronger pricing power, improved onboard spending, and a shift toward higher-value bookings — not just volume recovery.
03
RCL Achieved Far Higher EBITDA Margins by 2024
Carnival posted slightly higher absolute adjusted EBITDA in 2024 ($6.1B vs RCL's $6.0B), but earned it on far more revenue. RCL's ~36% EBITDA margin ($6.0B on $16.5B) dwarfs Carnival's ~24% ($6.1B on $25.0B). RCL's Trifecta program and premium brand positioning drove markedly superior profitability per dollar of revenue, suggesting a structural margin advantage.
04
Occupancy Exceeding 100% Signals Strong Demand
Both companies reported occupancy rates above 100% in 2024 (Carnival 104%, RCL 108%), indicating that more than two passengers per cabin occupied many sailings. Combined with record booking data for 2025, forward demand shows no signs of slowing.

Phase 6 — Act

Recommendations

Actionable insights for cruise industry stakeholders based on the data analysis.

For Carnival Corporation
Prioritize Margin Improvement Over Volume Growth
Carnival leads in passenger volume but trails RCL in EBITDA margin. The data suggests focusing on onboard revenue growth (currently $10.1B) and premium product offerings to close the profitability gap with RCL rather than simply adding more passengers.
For Royal Caribbean
Sustain Premium Positioning as Capacity Grows
RCL's superior revenue per passenger and EBITDA margin stem from brand premium and Trifecta execution. As the company adds capacity in 2025-2026, maintaining pricing discipline will be critical to preserving margin gains achieved during the recovery period.
For Industry Analysts
Occupancy Rate is the Leading Recovery Indicator
The data shows occupancy rate was the most reliable early signal of full recovery — it crossed 100% before revenue or EBITDA returned to baseline. Monitoring occupancy as a forward indicator provides earlier insight than headline revenue figures.
Future Research
Expand Analysis to Norwegian & MSC
Adding Norwegian Cruise Line and MSC to this dataset would provide a complete picture of the top 4 cruise operators and enable more robust industry benchmarking. Quarterly granularity would also allow seasonal pattern analysis.