Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save tu-trinh-scale/2681ac368ef2374385b5611040786c69 to your computer and use it in GitHub Desktop.

Select an option

Save tu-trinh-scale/2681ac368ef2374385b5611040786c69 to your computer and use it in GitHub Desktop.
WITH fall_semester_events AS (
-- Identify fall semester events (Sep-Nov 2019, the only/most recent fall semester in the DB)
SELECT event_id, event_name, event_date
FROM Event
WHERE strftime('%m', event_date) BETWEEN '09' AND '11'
AND strftime('%Y', event_date) = '2019'
),
-- Part 1: Advertisement budget ratio
adv_budgets AS (
SELECT
e.event_name,
b.amount AS adv_budget
FROM Budget b
JOIN fall_semester_events e ON b.link_to_event = e.event_id
WHERE b.category = 'Advertisement'
AND e.event_name IN ('Yearly Kickoff', 'October Meeting')
),
kickoff_vs_oct AS (
SELECT
MAX(CASE WHEN event_name = 'Yearly Kickoff' THEN adv_budget END) AS kickoff_adv,
MAX(CASE WHEN event_name = 'October Meeting' THEN adv_budget END) AS oct_adv,
ROUND(
MAX(CASE WHEN event_name = 'Yearly Kickoff' THEN adv_budget END) * 1.0 /
MAX(CASE WHEN event_name = 'October Meeting' THEN adv_budget END),
4
) AS times_larger
FROM adv_budgets
),
-- Part 2: State with highest total approved expenditure among October Meeting attendees
oct_meeting AS (
SELECT event_id FROM fall_semester_events WHERE event_name = 'October Meeting'
),
state_expenditures AS (
SELECT
z.state,
SUM(ex.cost) AS total_approved_expenditure,
RANK() OVER (ORDER BY SUM(ex.cost) DESC) AS rnk
FROM Attendance a
JOIN oct_meeting om ON a.link_to_event = om.event_id
JOIN Member m ON a.link_to_member = m.member_id
JOIN Zip_Code z ON CAST(m.zip AS TEXT) = CAST(z.zip_code AS TEXT)
JOIN Expense ex ON ex.link_to_member = m.member_id AND ex.approved = 2
GROUP BY z.state
),
top_state AS (
SELECT state, total_approved_expenditure FROM state_expenditures WHERE rnk = 1
)
SELECT
k.kickoff_adv AS yearly_kickoff_adv_budget,
k.oct_adv AS october_meeting_adv_budget,
k.times_larger AS adv_budget_ratio,
s.state AS top_state_by_approved_expenditure,
ROUND(s.total_approved_expenditure, 2) AS top_state_total_approved_expenditure
FROM kickoff_vs_oct k
CROSS JOIN top_state s;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment