STRASMORE/EXPLORE 3,293 QUERIES

quarterly_results

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-24, from msft-stock-price-analysis.

as of series 6×6read in context →
quarterly_results — 6 rows by 6 columns, computed from US exchange, SIP and OPRA data.
datequarter_labelrevenue_100m_usdoperating_income_100m_usdnet_income_100m_usddiluted_eps
2024-09-302024年9月655.8305.5246.73.3
2024-12-312024年12月696.3316.5241.13.23
2025-03-312025年3月700.7320258.23.46
2025-06-302025年6月764.4343.2272.33.65
2025-09-302025年9月776.7379.6277.53.72
2025-12-312025年12月812.7382.8384.65.16
Rows × columns
6 × 6
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for quarterly_results, derived from the stored result.
ColumnTypeRangeNotes
date date 2024-09-30 to 2025-12-31
quarter_label text 6 distinct values (2024年12月, 2024年9月, 2025年12月…)
revenue_100m_usd number 655.8 to 812.7 US dollars
operating_income_100m_usd number 305.5 to 382.8 US dollars
net_income_100m_usd number 241.1 to 384.6 US dollars
diluted_eps number 3.23 to 5.16

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    toString(period_end)                                                              AS date,
    concat(toString(toYear(period_end)), '年', toString(toMonth(period_end)), '月')   AS quarter_label,
    round(max(toFloat64(revenue)) / 1e8, 1)                                           AS revenue_100m_usd,
    round(max(toFloat64(operating_income)) / 1e8, 1)                                  AS operating_income_100m_usd,
    round(max(toFloat64(consolidated_net_income_loss)) / 1e8, 1)                      AS net_income_100m_usd,
    round(max(toFloat64(diluted_earnings_per_share)), 2)                              AS diluted_eps
FROM global_markets.stocks_income_statements
WHERE has(tickers, 'MSFT')
  AND timeframe = 'quarterly'
  AND period_end >= today() - 800
  AND period_end < today()
GROUP BY period_end
ORDER BY period_end
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.