Skip to main content

Module aggregation

Module aggregation 

Source
Expand description

Runtime Aggregation SQL Generation Module

This module generates database-specific SQL from aggregation execution plans.

§Database-Specific SQL

§PostgreSQL

SELECT
  data->>'category' AS category,
  DATE_TRUNC('day', occurred_at) AS occurred_at_day,
  COUNT(*) AS count,
  SUM(revenue) AS revenue_sum
FROM tf_sales
WHERE customer_id = $1
GROUP BY data->>'category', DATE_TRUNC('day', occurred_at)
HAVING SUM(revenue) > $2
ORDER BY revenue_sum DESC
LIMIT 10

§MySQL

SELECT
  JSON_UNQUOTE(JSON_EXTRACT(data, '$.category')) AS category,
  DATE_FORMAT(occurred_at, '%Y-%m-%d') AS occurred_at_day,
  COUNT(*) AS count,
  SUM(revenue) AS revenue_sum
FROM tf_sales
WHERE customer_id = ?
GROUP BY JSON_UNQUOTE(JSON_EXTRACT(data, '$.category')), DATE_FORMAT(occurred_at, '%Y-%m-%d')
HAVING SUM(revenue) > ?
ORDER BY revenue_sum DESC
LIMIT 10

§SQLite

SELECT
  json_extract(data, '$.category') AS category,
  strftime('%Y-%m-%d', occurred_at) AS occurred_at_day,
  COUNT(*) AS count,
  SUM(revenue) AS revenue_sum
FROM tf_sales
WHERE customer_id = ?
GROUP BY json_extract(data, '$.category'), strftime('%Y-%m-%d', occurred_at)
HAVING SUM(revenue) > ?
ORDER BY revenue_sum DESC
LIMIT 10

Structs§

AggregationSql
SQL query components
AggregationSqlGenerator
Aggregation SQL generator