訂單表 orders 有 total(金額)與 createtime(日期時間),需統計每日/每月總額。
SELECT SUM(total) AS daily_total,
CONVERT(CHAR(10), createtime, 120) AS day
FROM orders
GROUP BY CONVERT(CHAR(10), createtime, 120)
ORDER BY day;
SELECT SUM(total) AS monthly_total,
CONVERT(VARCHAR(7), createtime, 120) AS month
FROM orders
GROUP BY CONVERT(VARCHAR(7), createtime, 120)
ORDER BY month;
SELECT SUM(total), CONVERT(CHAR(10), createtime, 120) AS day
FROM orders
WHERE DATEPART(month, createtime) = DATEPART(month, GETDATE())
AND DATEPART(year, createtime) = DATEPART(year, GETDATE())
GROUP BY CONVERT(CHAR(10), createtime, 120);
SELECT SUM(total) AS daily_total,
DATE(createtime) AS day
FROM orders
GROUP BY DATE(createtime)
ORDER BY day;
SELECT SUM(total) AS monthly_total,
DATE_FORMAT(createtime, '%Y-%m') AS month
FROM orders
GROUP BY DATE_FORMAT(createtime, '%Y-%m')
ORDER BY month;
SELECT SUM(total), DATE(createtime) AS day
FROM orders
WHERE createtime >= DATE_FORMAT(NOW(), '%Y-%m-01')
AND createtime < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 MONTH), '%Y-%m-01')
GROUP BY DATE(createtime);
-- MSSQL
SELECT CAST(FLOOR(CAST(createtime AS FLOAT)) AS DATETIME) AS day, SUM(total)
FROM orders GROUP BY FLOOR(CAST(createtime AS FLOAT));
-- MySQL
SELECT DATE(createtime) AS day, SUM(total)
FROM orders GROUP BY DATE(createtime);
createtime 建立索引(單欄或複合)。