MySQL
MySQL
SELECT DATE(created_at) AS day,
COUNT(*) AS orders
FROM orders
GROUP BY DATE(created_at)
ORDER BY day;PostgreSQL
PostgreSQL
SELECT date_trunc('month', created_at) AS mon,
COUNT(*) AS orders
FROM orders
GROUP BY 1
ORDER BY mon;| 支持 | 分组键可为任意表达式 |
|---|---|
| 索引 | 表达式分组一般无法走普通索引 |
| 优化 | MySQL 支持表达式索引(8.0.13+)或生成列;PG 支持表达式索引 |