← All studies · askamerica.ai

Industries give roughly 2-2.5x more per member to legislators sitting on their regulating committee than to other members of Congress — the raw gap; the causal premium once selection is accounted for is closer to 32%

FEC direct PAC contributions, 2023-2024 cycle; 119th Congress committee rosters; literature comparison via Fouirnaies & Hall (2018, AJPS)

Industries Give 2-2.5x More Per Member to Legislators on Their Regulating Comm… FEC direct PAC contributions (24K), 2023-2024 cycle, to 119th Congress members, matched by name/state/district Avg premium across 3 industries (raw, uncontrolled) ~2.2x +120% Direct PAC $ per member, on-committee vs off-committee Average direct PAC $ per member, 2023-2024 cycle 0 100,000 200,000 300,000 400,000 500,000 600,000 700,000 Industry Avg $ per member Finance Energy Agriculture Off relevant committee On regulating committee Finance = House Financial Svcs/Senate Banking; Energy = House Energy & Commerce/Senate Energy & Nat. Resources; Agriculture = House/Senate… Causal literature estimate (state legislatures) ~32% Fouirnaies & Hall (2018 AJPS), within-legislator committee-assignment-change design, 99 state chambers Why raw and causal estimates differ Selection Powerful/aligned legislators seek and win lucrative seats; raw cross-sectional gap overstates the pure jurisdiction effect AskAmerica · askamerica.ai
SVG

Summary

In the 2023-2024 election cycle, industries gave roughly 2 to 2.5 times more in direct PAC contributions, per member, to legislators sitting on the House/Senate committee that regulates their industry than to members off that committee. Computed here: finance-sector PACs gave House Financial Services/Senate Banking members an average of $694,000 each vs. $331,000 for everyone else (2.1x); energy-sector PACs gave House Energy & Commerce/Senate Energy & Natural Resources members $354,000 vs. $166,000 (2.1x); agriculture-sector PACs gave House/Senate Agriculture Committee members $380,000 vs. $151,000 (2.5x). But this raw cross-sectional gap is NOT a clean causal estimate of what committee jurisdiction itself buys — powerful, senior, and already industry-aligned legislators are the ones who seek and win these committee seats in the first place, so some of the gap reflects who gets on the committee, not what the committee seat does. The one published study that isolates the pure jurisdiction effect with a within-legislator, before/after committee-assignment-change design (Fouirnaies & Hall, 2018, state legislatures) finds a real but much smaller premium of about 32% once that selection is stripped out. Both numbers are true and answer different questions: the raw gap (this analysis, current U.S. Congress) describes how much MORE money committee members actually receive; the causal estimate (published literature, state legislatures) describes how much of that is attributable to holding the seat itself.

Step 1 — Which channel and which industries

Money reaches candidates through several FEC-tracked channels. This analysis uses fec.committee_contributions filtered to transaction_type='24K' (direct PAC-to-candidate contributions), joined to fec.committees for each PAC's connected_org_name, for the 2024-cycle year. This is a real and defensible measure of direct industry giving, but it excludes independent expenditures, electioneering communications, and non-connected/leadership-PAC money (which in some cycles is larger than named-industry-PAC giving) — see the caveats section.

Three industries were chosen because they map cleanly onto a specific committee's jurisdiction: finance (banks, credit unions, securities, insurance, mortgage, investment, real estate PACs) against House Financial Services and Senate Banking, Housing & Urban Affairs; energy (energy, oil, gas, petroleum, electric, utility, power PACs) against House Energy & Commerce and Senate Energy & Natural Resources; and agriculture (farm, agriculture, grain, dairy, crop, cotton, sugar, poultry, cattle PACs) against House/Senate Agriculture. Industry identification here is by keyword match on the PAC's connected-organization name, not an exact entity join — this over- and under-matches at the margins (see caveats).

Step 2 — Building the committee rosters and matching to FEC candidate IDs

Committee membership for the current (119th) Congress came from officials.committee_membership joined to officials.committees — 53 members on House Financial Services, 24 on Senate Banking, 54 on House Energy & Commerce, 20 on Senate Energy & Natural Resources, 53 on House Agriculture, 23 on Senate Agriculture (227 committee-seat rows, 214 unique people, since some members sit on two of these committees).

These bioguide IDs were matched to FEC candidate_ids via officials.members (name, state, district) joined to fec.candidates (2024 election year) on state + office + district + last name. This is a name/geography match, not an exact ID crosswalk — no bioguide-to-FEC-candidate-ID table exists in this corpus. The match rate was roughly 35-40% of sitting members (e.g., 19 of 53 House Financial Services members, 8 of 24 Senate Banking members) — losses come mostly from members who ran unopposed or had simple FEC filings that didn't produce a matchable committee record, plus a few accented-name and multi-candidate-per-district collisions. The unmatched members were dropped rather than guessed at. Because the loss rate is similar across the on-committee and off-committee groups (both in the 33-40% range), it should not by itself bias the on/off ratio, but it does shrink the sample: only 27 of ~77 finance-committee members, 25 of ~74 energy-committee members, and 20 of ~76 agriculture-committee members are represented in the dollar totals below.

Step 3 — The computed gap

IndustryOff-committee members (matched)Off-committee avg $/memberOn-committee members (matched)On-committee avg $/memberRatio
Finance147$330,99127$694,3222.10x
Energy145$166,18025$354,0062.13x
Agriculture143$151,36020$380,3802.51x

The average premium across all three industries is roughly 2.2x (+120%) — committee members receive a bit more than double what non-committee members receive per capita from the industries their committee oversees. This is a cross-sectional, correlational finding for the current Congress, not a causal effect.

Step 4 — Why the raw gap overstates the pure committee effect, and what the literature finds instead

A cross-sectional comparison like the one above cannot separate 'the committee seat causes more industry money' from 'legislators who already have industry ties, seniority, or fundraising power get placed on (and stay on) the lucrative committee in the first place.' Committee assignments in the U.S. Congress are themselves partly a function of prior relationships with the industries the committee regulates — so some of the observed 2-2.5x gap is selection, not effect.

The design that actually isolates the jurisdiction effect is a within-legislator, before/after comparison: track legislators whose committee assignment CHANGED, and compare their own contributions before and after the change against a matched group of legislators whose assignment did not change over the same window. Fouirnaies and Hall, \"How Do Interest Groups Seek Access to Committees?\" (American Journal of Political Science, 2018, 62(1): 132-147), run exactly this design across 99 U.S. state legislative chambers, 1988-2014, and find that industries increase contributions to a legislator by roughly 32% on average once that legislator gains jurisdiction over their industry — with a placebo test (industries with no jurisdictional relationship to the committee) showing no comparable jump, which is what confirms the design is isolating the targeted relationship rather than a generic 'new committee seat, more money of all kinds' effect. This is the best available causal benchmark for the question, though it is measured in state legislatures, not the U.S. Congress specifically — no equivalent published within-legislator natural-experiment estimate for the federal Congress was found in this pass, and this corpus does not carry historical committee-ASSIGNMENT-CHANGE records (only the current roster), so that design could not be replicated here for federal committees in this session.

Other literature confirms the broader pattern qualitatively without a comparable causal estimate: OpenSecrets and academic work on corporate PAC giving (e.g., Grier, Munger & Roberts-style corporate-PAC studies) document that PAC contributions flow disproportionately to incumbents, majority-party members, and members of committees with jurisdiction relevant to the PAC's sponsor, and that more heavily regulated industries form more PACs and give more in aggregate — consistent with, but not a quantified causal replication of, the pattern found here.

Caveats and limits

What This Report Does Not Answer

Every query behind this report

18 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.

query — 6 rows — 1926 ms
SELECT committee_id, chamber, name FROM officials.committees WHERE is_subcommittee = false AND (name ILIKE '%financial services%' OR name ILIKE '%energy and commerce%' OR name ILIKE '%agriculture%' OR name ILIKE '%banking%' OR name ILIKE '%energy and natural resources%')
query — 1 rows — 2987 ms
SELECT MAX(congress) AS c FROM officials.members
query — 6 rows — 4661 ms
SELECT DISTINCT "year" FROM fec.committee_contributions ORDER BY 1
query — 1 rows — 5526 ms

WITH committee_current AS (
  SELECT cm.committee_id AS panel_id, c.chamber, c.name AS committee_name, cm.bioguide_id
  FROM officials.committee_membership cm JOIN officials.committees c ON cm.committee_id=c.committee_id
  WHERE cm.committee_id IN ('HSAG','HSBA','HSIF','SSAF','SSBK','SSEG')
),
mem AS (
  SELECT bioguide_id, name_last_first, state_name, district
  FROM officials.members WHERE congress = 119
),
matched AS (
  SELECT cc.panel_id, cc.chamber, cc.committee_name, cc.bioguide_id, m.name_last_first, m.state_name, m.district, sr.state_abbr
  FROM committee_current cc
  JOIN mem m ON cc.bioguide_id = m.bioguide_id
  JOIN geo.state_ref sr ON sr.state_name = m.state_name
)
SELECT count(*) AS n_committee_rows, count(DISTINCT bioguide_id) AS n_unique_members FROM matched
query — 6 rows — 5980 ms

WITH committee_current AS (
  SELECT cm.committee_id AS panel_id, c.chamber,
    CASE WHEN cm.committee_id IN ('HSBA','SSBK') THEN 'finance'
         WHEN cm.committee_id IN ('HSIF','SSEG') THEN 'energy'
         WHEN cm.committee_id IN ('HSAG','SSAF') THEN 'agriculture' END AS industry,
    cm.bioguide_id
  FROM officials.committee_membership cm JOIN officials.committees c ON cm.committee_id=c.committee_id
  WHERE cm.committee_id IN ('HSAG','HSBA','HSIF','SSAF','SSBK','SSEG')
),
mem AS (
  SELECT bioguide_id, name_last_first, state_name, district
  FROM officials.members WHERE congress = 119
),
matched AS (
  SELECT DISTINCT cc.industry, cc.chamber, cc.bioguide_id, m.name_last_first,
    sr.state_abbr, m.district,
    split_part(m.name_last_first, ',', 1) AS last_name
  FROM committee_current cc
  JOIN mem m ON cc.bioguide_id = m.bioguide_id
  JOIN geo.state_ref sr ON sr.state_name = m.state_name
),
cand AS (
  SELECT DISTINCT m.industry, m.chamber, m.bioguide_id, fc.candidate_id
  FROM matched m
  JOIN fec.candidates fc
    ON fc.state = m.state_abbr
    AND fc.office = CASE WHEN m.chamber='house' THEN 'H' ELSE 'S' END
    AND fc.election_year = 2024
    AND fc.candidate_name ILIKE m.last_name || ',%'
    AND (m.chamber = 'senate' OR fc.district = LPAD(CAST(m.district AS VARCHAR), 2, '0'))
)
SELECT industry, chamber, count(DISTINCT bioguide_id) AS n_members_matched, count(DISTINCT candidate_id) AS n_cand_ids
FROM cand GROUP BY industry, chamber
query — 6 rows — 781 ms
SELECT committee_id, count(*) FROM officials.committee_membership WHERE committee_id IN ('HSAG','HSBA','HSIF','SSAF','SSBK','SSEG') GROUP BY committee_id
query — 10 rows — 3360 ms

WITH committee_current AS (
  SELECT cm.bioguide_id
  FROM officials.committee_membership cm
  WHERE cm.committee_id = 'HSBA'
),
mem AS (
  SELECT bioguide_id, name_last_first, state_name, district AS mem_district
  FROM officials.members WHERE congress = 119
),
matchedx AS (
  SELECT cc.bioguide_id, m.name_last_first, sr.state_abbr, m.mem_district,
    split_part(m.name_last_first, ',', 1) AS last_name
  FROM committee_current cc
  JOIN mem m ON cc.bioguide_id = m.bioguide_id
  JOIN geo.state_ref sr ON sr.state_name = m.state_name
)
SELECT * FROM matchedx LIMIT 10
query — 1 rows — 3758 ms
SELECT candidate_id, candidate_name FROM fec.candidates WHERE state='AR' AND office='H' AND election_year=2024 AND candidate_name ILIKE 'Hill,%'
critique_query — 159 ms

WITH committee_current AS (
  SELECT cm.bioguide_id
  FROM officials.committee_membership cm
  WHERE cm.committee_id = 'HSBA'
),
mem AS (
  SELECT bioguide_id, name_last_first, state_name, district AS mem_district
  FROM officials.members WHERE congress = 119
),
matchedx AS (
  SELECT cc.bioguide_id, m.name_last_first, sr.state_abbr, m.mem_district,
    split_part(m.name_last_first, ',', 1) AS last_name
  FROM committee_current cc
  JOIN mem m ON cc.bioguide_id = m.bioguide_id
  JOIN geo.state_ref sr ON sr.state_name = m.state_name
)
SELECT matchedx.bioguide_id, matchedx.name_last_first, matchedx.state_abbr, matchedx.mem_district,
   fc.candidate_id, fc.candidate_name, fc.district AS fc_district
FROM matchedx
LEFT JOIN fec.candidates fc ON fc.state = matchedx.state_abbr AND fc.office = 'H' AND fc.election_year = 2024 AND fc.candidate_name ILIKE (matchedx.last_name || ',%')
ORDER BY matchedx.bioguide_id
LIMIT 70
query — 1 rows — 3878 ms
SELECT DISTINCT type FROM fec.candidates WHERE election_year=2024 LIMIT 5
query — 5 rows — 3893 ms
SELECT m.bioguide_id, fc.candidate_id FROM officials.members m JOIN fec.candidates fc ON fc.state='AR' WHERE m.congress=119 LIMIT 5
query — 5 rows — 5094 ms

WITH mem AS (
  SELECT bioguide_id, name_last_first, state_name FROM officials.members WHERE congress = 119 LIMIT 20
),
withabbr AS (
  SELECT mem.bioguide_id, mem.name_last_first, sr.state_abbr
  FROM mem JOIN geo.state_ref sr ON sr.state_name = mem.state_name
)
SELECT withabbr.bioguide_id, fc.candidate_id
FROM withabbr
JOIN fec.candidates fc ON fc.state = withabbr.state_abbr
LIMIT 5
query — 53 rows — 1321 ms
SELECT bioguide_id FROM officials.committee_membership WHERE committee_id='HSBA'
query — 227 rows — 1233 ms
SELECT bioguide_id FROM officials.committee_membership WHERE committee_id IN ('HSAG','HSBA','HSIF','SSAF','SSBK','SSEG')
query — 227 rows — 1542 ms
SELECT committee_id, bioguide_id FROM officials.committee_membership WHERE committee_id IN ('HSAG','HSBA','HSIF','SSAF','SSBK','SSEG')
query — 500 rows — 9987 ms

SELECT mem.bioguide_id, mem.name_last_first, sr.state_abbr, mem.district AS mem_district,
   CASE WHEN mem.district IS NULL THEN 'senate' ELSE 'house' END AS chamber,
   fc.candidate_id
FROM officials.members mem
JOIN geo.state_ref sr ON sr.state_name = mem.state_name
LEFT JOIN fec.candidates fc
  ON fc.state = sr.state_abbr
  AND fc.election_year = 2024
  AND fc.office = CASE WHEN mem.district IS NULL THEN 'S' ELSE 'H' END
  AND fc.candidate_name ILIKE split_part(mem.name_last_first, ',', 1) || ',%'
  AND (mem.district IS NULL OR fc.district = LPAD(CAST(mem.district AS VARCHAR), 2, '0'))
WHERE mem.congress = 119
query — 13 rows — 10572 ms

WITH candmap AS (
  SELECT mem.bioguide_id,
    CASE WHEN mem.district IS NULL THEN 'senate' ELSE 'house' END AS chamber,
    fc.candidate_id,
    CASE WHEN mem.bioguide_id IN ('H001072','W000187','L000491','V000081','S000250','S000344','H001058','M001137','W000812','L000562','B001282','G000553','W000816','C001061','E000294','H001047','L000583','F000454','D000626','B001281','R000612','V000130','S001213','G000583','T000480','G000581','S001188','C001117','N000190','P000617','M001204','T000481','K000397','T000486','D000032','G000587','G000597','W000788','F000471','P000620','F000474','F000110','L000599','B001326','D000594','L000607','O000175','N000193','M001136','S000168','D000634','H001099','M001236','S001184','C000880','R000605','T000476','K000393','H000601','L000571','B001319','R000618','B001299','C001096','M001242','M001243','W000817','R000122','W000805','V000128','C001113','S001203','W000790','K000394','G000574','B001303','A000382') THEN 1 ELSE 0 END AS is_finance_committee,
    CASE WHEN mem.bioguide_id IN ('G000558','P000034','L000566','D000197','G000568','S001145','B001257','M001163','H001067','C001066','C001103','T000469','P000609','C001067','D000628','R000599','C001120','P000608','J000302','D000624','W000814','V000131','A000372','K000385','B001306','B001300','F000469','S001200','P000048','S001216','H001086','T000482','M001215','F000468','C001039','O000172','O000019','A000148','J000307','C001125','B000668','M001226','H001093','M001225','F000478','L000601','L000597','M001227','L000600','K000398','R000619','E000300','G000601','F000482','L000577','B001261','R000584','D000618','C001095','M001243','J000312','C001075','H001079','M001153','H001061','H001046','W000779','C000127','H001042','K000383','C001113','H000273','P000145','G000574') THEN 1 ELSE 0 END AS is_energy_committee,
    CASE WHEN mem.bioguide_id IN ('T000467','C001119','L000491','C001059','S001189','M000312','C001087','A000370','D000616','H001081','R000603','B001313','K000388','D000629','B001298','S001226','B001295','D000230','J000301','T000487','B001307','B001315','M000871','S001225','F000446','V000136','M001211','J000309','M001212','T000488','C001039','G000605','F000475','M001237','R000612','F000481','J000304','V000138','D000594','R000622','N000193','M001231','V000135','M001232','N000189','P000597','W000829','C001112','B001327','M001233','H001102','T000490','V000129','B001236','M000355','H001061','E000295','H001079','M001198','T000278','J000312','G000386','T000250','F000463','M000934','K000367','B001267','S001203','D000563','B001288','L000570','W000790','W000800','F000479','S001150','S001208') THEN 1 ELSE 0 END AS is_ag_committee
  FROM officials.members mem
  JOIN geo.state_ref sr ON sr.state_name = mem.state_name
  LEFT JOIN fec.candidates fc
    ON fc.state = sr.state_abbr
    AND fc.election_year = 2024
    AND fc.office = CASE WHEN mem.district IS NULL THEN 'S' ELSE 'H' END
    AND fc.candidate_name ILIKE split_part(mem.name_last_first, ',', 1) || ',%'
    AND (mem.district IS NULL OR fc.district = LPAD(CAST(mem.district AS VARCHAR), 2, '0'))
  WHERE mem.congress = 119
)
SELECT chamber, is_finance_committee, is_energy_committee, is_ag_committee, count(DISTINCT bioguide_id) AS n_members, count(DISTINCT candidate_id) AS n_matched_candidates
FROM candmap
GROUP BY chamber, is_finance_committee, is_energy_committee, is_ag_committee
query — 6 rows — 60861 ms

WITH candmap AS (
  SELECT mem.bioguide_id,
    fc.candidate_id,
    CASE WHEN mem.bioguide_id IN ('H001072','W000187','L000491','V000081','S000250','S000344','H001058','M001137','W000812','L000562','B001282','G000553','W000816','C001061','E000294','H001047','L000583','F000454','D000626','B001281','R000612','V000130','S001213','G000583','T000480','G000581','S001188','C001117','N000190','P000617','M001204','T000481','K000397','T000486','D000032','G000587','G000597','W000788','F000471','P000620','F000474','F000110','L000599','B001326','D000594','L000607','O000175','N000193','M001136','S000168','D000634','H001099','M001236','S001184','C000880','R000605','T000476','K000393','H000601','L000571','B001319','R000618','B001299','C001096','M001242','M001243','W000817','R000122','W000805','V000128','C001113','S001203','W000790','K000394','G000574','B001303','A000382') THEN 1 ELSE 0 END AS is_finance_committee,
    CASE WHEN mem.bioguide_id IN ('G000558','P000034','L000566','D000197','G000568','S001145','B001257','M001163','H001067','C001066','C001103','T000469','P000609','C001067','D000628','R000599','C001120','P000608','J000302','D000624','W000814','V000131','A000372','K000385','B001306','B001300','F000469','S001200','P000048','S001216','H001086','T000482','M001215','F000468','C001039','O000172','O000019','A000148','J000307','C001125','B000668','M001226','H001093','M001225','F000478','L000601','L000597','M001227','L000600','K000398','R000619','E000300','G000601','F000482','L000577','B001261','R000584','D000618','C001095','M001243','J000312','C001075','H001079','M001153','H001061','H001046','W000779','C000127','H001042','K000383','C001113','H000273','P000145','G000574') THEN 1 ELSE 0 END AS is_energy_committee,
    CASE WHEN mem.bioguide_id IN ('T000467','C001119','L000491','C001059','S001189','M000312','C001087','A000370','D000616','H001081','R000603','B001313','K000388','D000629','B001298','S001226','B001295','D000230','J000301','T000487','B001307','B001315','M000871','S001225','F000446','V000136','M001211','J000309','M001212','T000488','C001039','G000605','F000475','M001237','R000612','F000481','J000304','V000138','D000594','R000622','N000193','M001231','V000135','M001232','N000189','P000597','W000829','C001112','B001327','M001233','H001102','T000490','V000129','B001236','M000355','H001061','E000295','H001079','M001198','T000278','J000312','G000386','T000250','F000463','M000934','K000367','B001267','S001203','D000563','B001288','L000570','W000790','W000800','F000479','S001150','S001208') THEN 1 ELSE 0 END AS is_ag_committee
  FROM officials.members mem
  JOIN geo.state_ref sr ON sr.state_name = mem.state_name
  LEFT JOIN fec.candidates fc
    ON fc.state = sr.state_abbr
    AND fc.election_year = 2024
    AND fc.office = CASE WHEN mem.district IS NULL THEN 'S' ELSE 'H' END
    AND fc.candidate_name ILIKE split_part(mem.name_last_first, ',', 1) || ',%'
    AND (mem.district IS NULL OR fc.district = LPAD(CAST(mem.district AS VARCHAR), 2, '0'))
  WHERE mem.congress = 119
),
distinct_cand AS (
  SELECT DISTINCT bioguide_id, candidate_id, is_finance_committee, is_energy_committee, is_ag_committee
  FROM candmap WHERE candidate_id IS NOT NULL
),
contrib AS (
  SELECT cc.candidate_id, cm.connected_org_name, cc.amount
  FROM fec.committee_contributions cc
  JOIN fec.committees cm ON cm.committee_id = cc.committee_id
  WHERE cc."year" = '2024' AND cc.transaction_type = '24K' AND cm.connected_org_name IS NOT NULL
),
finance AS (
  SELECT dc.is_finance_committee AS on_committee, count(DISTINCT dc.bioguide_id) AS n_members, sum(ct.amount) AS total_amt
  FROM distinct_cand dc JOIN contrib ct ON ct.candidate_id = dc.candidate_id
  WHERE ct.connected_org_name ILIKE '%bank%' OR ct.connected_org_name ILIKE '%financial%' OR ct.connected_org_name ILIKE '%credit union%' OR ct.connected_org_name ILIKE '%securities%' OR ct.connected_org_name ILIKE '%insurance%' OR ct.connected_org_name ILIKE '%investment%' OR ct.connected_org_name ILIKE '%mortgage%' OR ct.connected_org_name ILIKE '%realtors%' OR ct.connected_org_name ILIKE '%real estate%'
  GROUP BY dc.is_finance_committee
),
energy AS (
  SELECT dc.is_energy_committee AS on_committee, count(DISTINCT dc.bioguide_id) AS n_members, sum(ct.amount) AS total_amt
  FROM distinct_cand dc JOIN contrib ct ON ct.candidate_id = dc.candidate_id
  WHERE ct.connected_org_name ILIKE '%energy%' OR ct.connected_org_name ILIKE '%oil%' OR ct.connected_org_name ILIKE '%gas%' OR ct.connected_org_name ILIKE '%petroleum%' OR ct.connected_org_name ILIKE '%electric%' OR ct.connected_org_name ILIKE '%utilit%' OR ct.connected_org_name ILIKE '%power%'
  GROUP BY dc.is_energy_committee
),
ag AS (
  SELECT dc.is_ag_committee AS on_committee, count(DISTINCT dc.bioguide_id) AS n_members, sum(ct.amount) AS total_amt
  FROM distinct_cand dc JOIN contrib ct ON ct.candidate_id = dc.candidate_id
  WHERE ct.connected_org_name ILIKE '%farm%' OR ct.connected_org_name ILIKE '%agricult%' OR ct.connected_org_name ILIKE '%grain%' OR ct.connected_org_name ILIKE '%dairy%' OR ct.connected_org_name ILIKE '%crop%' OR ct.connected_org_name ILIKE '%cotton%' OR ct.connected_org_name ILIKE '%sugar%' OR ct.connected_org_name ILIKE '%poultry%' OR ct.connected_org_name ILIKE '%cattle%'
  GROUP BY dc.is_ag_committee
)
SELECT 'finance' AS industry, * FROM finance
UNION ALL
SELECT 'energy' AS industry, * FROM energy
UNION ALL
SELECT 'agriculture' AS industry, * FROM ag

Sources

  1. fec.committee_contributions (24K direct PAC contributions, 2024 cycle) joined to fec.committees, officials.committee_membership/committees, officials.members, fec.candidates, geo.state_ref
    Show SQL
    See Step 3 query: CTE joining officials.members + geo.state_ref + fec.candidates (name/state/district match) to fec.committee_contributions (transaction_type='24K', year='2024') via fec.committees.connected_org_name keyword filters, grouped by on/off relevant committee flag.
  2. Fouirnaies & Hall, "How Do Interest Groups Seek Access to Committees?", American Journal of Political Science 62(1), 2018 — Within-legislator, committee-assignment-change design; 99 state legislative chambers, 1988-2014; ~32% average contribution premium under committee jurisdiction
  3. Corporate PAC Campaign Contributions in Perspective — Qualitative literature confirming PAC money flows disproportionately to committee members with relevant jurisdiction
  4. OpenSecrets, Political Action Committees (PACs), 2024 — Context: ~$453M in direct PAC contributions to federal candidates in 2024