-- 问题提炼:客户名Tom 在2023年 每月 消费金额 (按月份正序显示)
SELECT
DATE_FORMAT(t_time, '%Y-%m') AS time
,SUM(t_amount) AS total
FROM
trade
WHERE
YEAR(t_time) = '2023'
AND t_type = 1
AND t_cus = (SELECT c_id FROM customer WHERE c_name = 'Tom')
GROUP BY DATE_FORMAT(t_time, '%Y-%m')
ORDER BY DATE_FORMAT(t_time, '%Y-%m')
;
重点:
DATE_FORMAT()函数的格式:DATE_FORMAT(date, format)
format参数
%Y:四位的年份(如:2024)
%y:两位的年份(如:24)
%m:月份(01-12)
%d:月份中的天数(01-31)
%H:小时(00-23)
%i:分钟(00-59)
%s:秒数(00-59)
%w:一周中的天数(0=星期日, 1=星期一,...,6=星期六)
SELECT DATE_FORMAT('2024-08-23', '%Y-%m-%d'); -- 输出:2024-08-23
SELECT DATE_FORMAT('2024-08-23', '%Y%m'); -- 输出:202408
t_cus = (SELECT c_id FROM customer WHERE c_name = 'Tom')
一开始的想法是表关联,后来用子查询,子查询要快些,因为只获取一笔数据的某个字段。
END

京公网安备 11010502036488号