我发现自己处于这样的情况,一遍又一遍地重复同样的逻辑
SELECT
city,
CAST(SUM(IF(date > DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY), value, 0)) AS INT64) AS value_7,
CAST(SUM(IF(date > DATE_SUB(CURRENT_DATE(), INTERVAL 14 DAY), value, 0)) AS INT64) AS value_14
FROM
table
GROUP BY
city
现在value
旁边,我还有10列要应用相同逻辑的列。有没有一种简单的方法可以将格式和条件抽象化?
例如my_func(val_col, date_col, days)
?
我知道我可以手动完成,但是看起来很丑。
您可以创建temporary functions并在SQL查询中调用它们,几乎是您提到的my_func(col, days)
。