human 帮我给我下面的sql语句标注好对应的月份 SELECT DATE_FORMATdate_tablemonth Y-m AS month IFNULLSUMototal 0 AS sales_amount IFNULLSUMoiquantity 0 AS sold_items IFNULLCOUNTuid 0 AS new_users FROM
机器人:好的,以下是标注好的月份对应的sql语句:
SELECT DATE_FORMAT(date_table.month, '%Y-%m') AS month, -- 格式化月份为YYYY-MM格式 IFNULL(SUM(o.total), 0) AS sales_amount, -- 销售额(订单总金额) IFNULL(SUM(oi.quantity), 0) AS sold_items, -- 销售商品数量 IFNULL(COUNT(u.id), 0) AS new_users -- 新增用户数 FROM (SELECT DATE_FORMAT((CURDATE() - INTERVAL (a.a) MONTH), '%Y-%m') AS month -- 生成12个月份的临时表 FROM (SELECT 0 AS a UNION SELECT 1 AS a UNION SELECT 2 AS a UNION SELECT 3 AS a UNION SELECT 4 AS a UNION SELECT 5 AS a UNION SELECT 6 AS a UNION SELECT 7 AS a UNION SELECT 8 AS a UNION SELECT 9 AS a UNION SELECT 10 AS a UNION SELECT 11 AS a) AS a) date_table LEFT JOIN orders o ON DATE_FORMAT(o.created_at, '%Y-%m') = date_table.month -- 按月份匹配订单创建时间 AND o.created_at BETWEEN DATE_SUB(NOW(), INTERVAL 1 YEAR) AND NOW() -- 限定时间范围为过去一年 LEFT JOIN order_items oi ON o.id = oi.order_id -- 关联订单商品表 LEFT JOIN users u ON DATE_FORMAT(u.created_at, '%Y-%m') = date_table.month -- 按月份匹配用户创建时间 AND u.created_at BETWEEN DATE_SUB(NOW(), INTERVAL 1 YEAR) AND NOW() -- 限定时间范围为过去一年 GROUP BY month; -- 按月份分组统计结
原文地址: http://www.cveoy.top/t/topic/fGLY 著作权归作者所有。请勿转载和采集!