{"slug":"stock-splits-calendar-from-the-free-sql-api","qid":"column_semantics","label":"column_semantics","post_title":"stock-splits-calendar-from-the-free-sql-api","post_url":"/blog/stock-splits-calendar-from-the-free-sql-api#q-column_semantics","columns":["direction","splits","to_above_from","from_above_to"],"rows":[{"direction":"forward split","splits":782,"to_above_from":782,"from_above_to":0},{"direction":"reverse split","splits":3602,"to_above_from":546,"from_above_to":3056}],"shape":"ranking","sql":"SELECT\n    direction,\n    count()                             AS splits,\n    countIf(new_shares > old_shares)    AS to_above_from,\n    countIf(old_shares > new_shares)    AS from_above_to\nFROM\n(\n    SELECT\n        execution_date,\n        ticker,\n        any(if(adjustment_type = 'forward_split', 'forward split', 'reverse split')) AS direction,\n        toFloat64(any(split_to))   AS new_shares,\n        toFloat64(any(split_from)) AS old_shares\n    FROM global_markets.stocks_splits\n    WHERE execution_date >= today() - 1095\n      AND split_from > 0\n      AND split_to > 0\n    GROUP BY execution_date, ticker\n)\nGROUP BY direction\nORDER BY direction","computed_at":"2026-09-23T14:39:25.710523+00:00","elapsed":0.067597436}