{"slug":"average-dividend-yield-by-sector","qid":"universe_effect","label":"The universe choice: sector means with and without non-payers","post_title":"Average Dividend Yield by Sector: 2026 Data","post_url":"/blog/average-dividend-yield-by-sector#q-universe_effect","columns":["sector","dividend_payers","non_payers","payers_only_mean_pct","all_names_mean_pct","gap_pct"],"rows":[{"sector":"Discretionary","dividend_payers":3,"non_payers":2,"payers_only_mean_pct":3.11,"all_names_mean_pct":1.86,"gap_pct":1.24},{"sector":"Communication","dividend_payers":4,"non_payers":1,"payers_only_mean_pct":4.3,"all_names_mean_pct":3.44,"gap_pct":0.86},{"sector":"Tech","dividend_payers":4,"non_payers":1,"payers_only_mean_pct":0.8,"all_names_mean_pct":0.64,"gap_pct":0.16},{"sector":"Staples","dividend_payers":5,"non_payers":0,"payers_only_mean_pct":2.63,"all_names_mean_pct":2.63,"gap_pct":0},{"sector":"Energy","dividend_payers":4,"non_payers":0,"payers_only_mean_pct":2.7,"all_names_mean_pct":2.7,"gap_pct":0},{"sector":"Health Care","dividend_payers":5,"non_payers":0,"payers_only_mean_pct":2.33,"all_names_mean_pct":2.33,"gap_pct":0},{"sector":"Financials","dividend_payers":5,"non_payers":0,"payers_only_mean_pct":2.03,"all_names_mean_pct":2.03,"gap_pct":0},{"sector":"Industrials","dividend_payers":5,"non_payers":0,"payers_only_mean_pct":1.52,"all_names_mean_pct":1.52,"gap_pct":0},{"sector":"Utilities","dividend_payers":5,"non_payers":0,"payers_only_mean_pct":3.38,"all_names_mean_pct":3.38,"gap_pct":0},{"sector":"Real Estate","dividend_payers":4,"non_payers":0,"payers_only_mean_pct":4.12,"all_names_mean_pct":4.12,"gap_pct":0},{"sector":"Materials","dividend_payers":4,"non_payers":0,"payers_only_mean_pct":2.06,"all_names_mean_pct":2.06,"gap_pct":0}],"shape":"table","sql":"WITH\n    basket AS\n    (\n        SELECT\n            pair.1 AS ticker,\n            pair.2 AS sector\n        FROM\n        (\n            SELECT arrayJoin([\n                ('XOM', 'Energy'), ('CVX', 'Energy'), ('COP', 'Energy'), ('SLB', 'Energy'),\n                ('JPM', 'Financials'), ('BAC', 'Financials'), ('GS', 'Financials'), ('BLK', 'Financials'), ('AXP', 'Financials'),\n                ('JNJ', 'Health Care'), ('ABBV', 'Health Care'), ('MRK', 'Health Care'), ('AMGN', 'Health Care'), ('GILD', 'Health Care'),\n                ('KO', 'Staples'), ('PG', 'Staples'), ('PEP', 'Staples'), ('COST', 'Staples'), ('CL', 'Staples'),\n                ('DUK', 'Utilities'), ('SO', 'Utilities'), ('AEP', 'Utilities'), ('NEE', 'Utilities'), ('XEL', 'Utilities'),\n                ('AAPL', 'Tech'), ('MSFT', 'Tech'), ('AVGO', 'Tech'), ('CSCO', 'Tech'), ('ADBE', 'Tech'),\n                ('CAT', 'Industrials'), ('HON', 'Industrials'), ('UNP', 'Industrials'), ('GE', 'Industrials'), ('LMT', 'Industrials'),\n                ('HD', 'Discretionary'), ('MCD', 'Discretionary'), ('AMZN', 'Discretionary'), ('TSLA', 'Discretionary'), ('SBUX', 'Discretionary'),\n                ('LIN', 'Materials'), ('SHW', 'Materials'), ('NEM', 'Materials'), ('DOW', 'Materials'),\n                ('VZ', 'Communication'), ('T', 'Communication'), ('CMCSA', 'Communication'), ('GOOGL', 'Communication'), ('NFLX', 'Communication'),\n                ('AMT', 'Real Estate'), ('PLD', 'Real Estate'), ('PSA', 'Real Estate'), ('SPG', 'Real Estate')\n            ]) AS pair\n        )\n    ),\n    price AS\n    (\n        SELECT\n            ticker,\n            argMax(toFloat64(close), date) AS last_close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN (SELECT ticker FROM basket)\n          AND date >= today() - 20\n        GROUP BY ticker\n    ),\n    indicated AS\n    (\n        SELECT\n            ticker,\n            toFloat64(argMax(cash_amount, ex_dividend_date))\n                * toFloat64(argMax(frequency, ex_dividend_date)) AS annual_rate\n        FROM global_markets.stocks_dividends\n        WHERE ticker IN (SELECT ticker FROM basket)\n          AND ex_dividend_date >= today() - 400\n          AND frequency > 0\n          AND cash_amount > 0\n        GROUP BY ticker\n    ),\n    name_level AS\n    (\n        SELECT\n            b.sector                                                AS sector,\n            b.ticker                                                AS ticker,\n            round(100 * ifNull(i.annual_rate, 0) / p.last_close, 2) AS yield_pct\n        FROM basket AS b\n        INNER JOIN price AS p ON p.ticker = b.ticker\n        LEFT  JOIN indicated AS i ON i.ticker = b.ticker\n    )\nSELECT\n    sector,\n    countIf(yield_pct > 0)                                              AS dividend_payers,\n    countIf(yield_pct = 0)                                              AS non_payers,\n    round(avgIf(yield_pct, yield_pct > 0), 2)                           AS payers_only_mean_pct,\n    round(avg(yield_pct), 2)                                            AS all_names_mean_pct,\n    round(avgIf(yield_pct, yield_pct > 0) - avg(yield_pct), 2)          AS gap_pct\nFROM name_level\nGROUP BY sector\nHAVING countIf(yield_pct > 0) > 0\nORDER BY gap_pct DESC","computed_at":"2026-10-08T15:32:24.020664+00:00","elapsed":0.327118324}