-- 使用 Common Table Expression (CTE) 定义一个临时表 tom_t
with tom_t as (
-- 从 trade 表中选择 t_time 和 t_amount 列
select
t.t_time,
t.t_amount
from
trade t
-- 左连接 customer 表,连接条件是 trade 表的 t_cus 列与 customer 表的 c_id 列相等
left join
customer c on t.t_cus = c.c_id
-- 过滤条件:customer 表的 c_name 列等于 'Tom'
-- 并且 trade 表的 t_type 列等于 1
-- 并且 trade 表的 t_time 列大于等于 '2023-01-01'
-- 并且 trade 表的 t_time 列小于 '2024-01-01'
where
c.c_name = 'Tom'
and t.t_type = 1
and t.t_time >= '2023-01-01'
and t.t_time < '2024-01-01'
)
-- 从 tom_t 表中选择数据
select
-- 将 t_time 列格式化为 'YYYY-MM' 格式,并命名为 time
date_format(t_time, '%Y-%m') as time,
-- 对 t_amount 列求和,并命名为 total
sum(t_amount) as total
from
tom_t
-- 按 time 列进行分组
group by
time
-- 按 time 列进行排序
order by
time;