STRASMORE/EXPLORE 3,214 QUERIES

Dividends paid as a share of operating cash flow, by sector

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-08, from Average Dividend Yield by Sector: 2026 Data.

as of ranking 11×3read in context →
Dividends paid as a share of operating cash flow, by sector — 11 rows by 3 columns, computed from US exchange, SIP and OPRA data.
sectornames_with_filingsdividends_pct_of_cash_flow
Real Estate472.2
Staples544.5
Health Care544.4
Energy431.7
Utilities530.1
Industrials526.4
Materials419.3
Tech516.5
Discretionary513.4
Communication511.7
Financials510.2
Rows × columns
11 × 3
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Dividends paid as a share of operating cash flow, by sector, derived from the stored result.
ColumnTypeRangeNotes
sector text 11 distinct values (Communication, Discretionary, Energy…)
names_with_filings number 4 to 5
dividends_pct_of_cash_flow number 10.2 to 72.2 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    basket AS
    (
        SELECT
            pair.1 AS ticker,
            pair.2 AS sector
        FROM
        (
            SELECT arrayJoin([
                ('XOM', 'Energy'), ('CVX', 'Energy'), ('COP', 'Energy'), ('SLB', 'Energy'),
                ('JPM', 'Financials'), ('BAC', 'Financials'), ('GS', 'Financials'), ('BLK', 'Financials'), ('AXP', 'Financials'),
                ('JNJ', 'Health Care'), ('ABBV', 'Health Care'), ('MRK', 'Health Care'), ('AMGN', 'Health Care'), ('GILD', 'Health Care'),
                ('KO', 'Staples'), ('PG', 'Staples'), ('PEP', 'Staples'), ('COST', 'Staples'), ('CL', 'Staples'),
                ('DUK', 'Utilities'), ('SO', 'Utilities'), ('AEP', 'Utilities'), ('NEE', 'Utilities'), ('XEL', 'Utilities'),
                ('AAPL', 'Tech'), ('MSFT', 'Tech'), ('AVGO', 'Tech'), ('CSCO', 'Tech'), ('ADBE', 'Tech'),
                ('CAT', 'Industrials'), ('HON', 'Industrials'), ('UNP', 'Industrials'), ('GE', 'Industrials'), ('LMT', 'Industrials'),
                ('HD', 'Discretionary'), ('MCD', 'Discretionary'), ('AMZN', 'Discretionary'), ('TSLA', 'Discretionary'), ('SBUX', 'Discretionary'),
                ('LIN', 'Materials'), ('SHW', 'Materials'), ('NEM', 'Materials'), ('DOW', 'Materials'),
                ('VZ', 'Communication'), ('T', 'Communication'), ('CMCSA', 'Communication'), ('GOOGL', 'Communication'), ('NFLX', 'Communication'),
                ('AMT', 'Real Estate'), ('PLD', 'Real Estate'), ('PSA', 'Real Estate'), ('SPG', 'Real Estate')
            ]) AS pair
        )
    ),
    quarters AS
    (
        SELECT
            ticker,
            period_end,
            max(abs(toFloat64(dividends)))                          AS dividends_paid,
            max(toFloat64(net_cash_from_operating_activities))      AS operating_cash_flow
        FROM
        (
            SELECT
                arrayJoin(tickers) AS ticker,
                period_end,
                dividends,
                net_cash_from_operating_activities
            FROM global_markets.stocks_cash_flow_statements
            WHERE timeframe = 'quarterly'
              AND period_end >= today() - 500
              AND period_end <= today()
        )
        GROUP BY ticker, period_end
    ),
    joined AS
    (
        SELECT
            b.sector               AS sector,
            q.ticker               AS ticker,
            q.dividends_paid       AS dividends_paid,
            q.operating_cash_flow  AS operating_cash_flow
        FROM quarters AS q
        INNER JOIN basket AS b ON b.ticker = q.ticker
        WHERE q.operating_cash_flow > 0
    )
SELECT
    sector,
    countDistinct(ticker)                                          AS names_with_filings,
    round(100 * sum(dividends_paid) / sum(operating_cash_flow), 1) AS dividends_pct_of_cash_flow
FROM joined
GROUP BY sector
HAVING sum(operating_cash_flow) > 0
ORDER BY dividends_pct_of_cash_flow DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisAverage Dividend Yield by Sector: 2026 Data
Basket median dividend yield by month, with the 10-year Treasury yield series 36×4 → The universe choice: sector means with and without non-payers table 11×6 → Dividend yield by sector: median payer, equal-weighted mean, cap-weighted table 11×5 → How many US companies clear each yield floor, with payout ratio and loss-makers ranking 8×4 → Conagra (CAG): month-end price, annualized dividend rate, and yield, 2021-08 to 2026-07 series 60×5 → Walgreens Boots Alliance (WBA): month-end price, quarterly dividend, and yield, 2022-07 to 2024-06 series 24×5 → See all 3,214 queries →