{"slug":"relative-volume-screener-from-the-free-sql-api","qid":"morning_share","label":"morning_share","post_title":"relative-volume-screener-from-the-free-sql-api","post_url":"/blog/relative-volume-screener-from-the-free-sql-api#q-morning_share","columns":["ticker","morning_share_pct","avg_volume_mm"],"rows":[{"ticker":"AMD","morning_share_pct":42.1,"avg_volume_mm":16.9},{"ticker":"TSLA","morning_share_pct":41.9,"avg_volume_mm":32.6},{"ticker":"NVDA","morning_share_pct":39.1,"avg_volume_mm":90.8},{"ticker":"MSFT","morning_share_pct":35.9,"avg_volume_mm":14.1},{"ticker":"WMT","morning_share_pct":35.2,"avg_volume_mm":17.8},{"ticker":"AAPL","morning_share_pct":35.2,"avg_volume_mm":29.8},{"ticker":"JNJ","morning_share_pct":32.3,"avg_volume_mm":4},{"ticker":"KO","morning_share_pct":30.4,"avg_volume_mm":9.4},{"ticker":"DIS","morning_share_pct":29.6,"avg_volume_mm":5.7},{"ticker":"PG","morning_share_pct":28.7,"avg_volume_mm":5.8},{"ticker":"XOM","morning_share_pct":28.6,"avg_volume_mm":9.5},{"ticker":"SPY","morning_share_pct":26.8,"avg_volume_mm":32.5}],"shape":"ranking","sql":"WITH\n    bars AS (\n        SELECT\n            ticker,\n            toDate(et_ts)                        AS session_date,\n            toHour(et_ts) * 60 + toMinute(et_ts) AS et_min,\n            toFloat64(volume)                    AS vol\n        FROM\n        (\n            SELECT\n                ticker,\n                toTimeZone(window_start, 'America/New_York') AS et_ts,\n                volume\n            FROM global_markets.delayed_stocks_minute_aggs\n            WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'TSLA', 'JNJ', 'XOM', 'PG', 'AMD', 'WMT', 'DIS')\n              AND window_start >= toDateTime(today() - 45)\n        )\n    ),\n    totals AS (\n        SELECT\n            ticker,\n            session_date,\n            sumIf(vol, et_min >= 570 AND et_min < 660) AS morning,\n            sumIf(vol, et_min >= 570 AND et_min < 960) AS day_vol,\n            maxIf(et_min, et_min < 960)                AS last_min\n        FROM bars\n        GROUP BY ticker, session_date\n    )\nSELECT\n    ticker,\n    round(100 * sum(morning) / sum(day_vol), 1) AS morning_share_pct,\n    round(avg(day_vol) / 1e6, 1)                AS avg_volume_mm\nFROM totals\nWHERE last_min >= 955\nGROUP BY ticker\nORDER BY morning_share_pct DESC","computed_at":"2026-09-25T15:03:24.606350+00:00","elapsed":0.54910896}