-- 问题提炼:客户名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