【发布时间】:2020-09-05 12:55:27
【问题描述】:
我想计算 2 sum() 我已经尝试过如下查询,它可以工作但速度很慢。有什么想法可以让它变得更好吗?
SELECT customer,
SUM(CASE WHEN book_day BETWEEN '2020-01-01' AND '2020-01-31'
THEN pax+free
ELSE 0
END) AS January,
SUM(CASE WHEN book_day BETWEEN '2020-02-01' AND '2020-02-31'
THEN pax+free
ELSE 0
END) AS February,
( SUM(CASE WHEN book_day BETWEEN '2020-01-01' AND '2020-01-31'
THEN pax+free
ELSE 0
END) +
SUM(CASE WHEN book_day BETWEEN '2020-02-01' AND '2020-02-31'
THEN pax+free
ELSE 0
END) ) AS total
FROM rezervations
我怎样才能让January + February as total这样更简单
【问题讨论】:
-
'2020-02-31'匹配无效日期。顺便说一句,book_day列上是否有索引..? -
它只是看起来是否存在一天,不管我寄给他什么。只关注查询:)
-
好吧,那就使用
SUM(CASE WHEN book_day BETWEEN '2020-01-01' AND '2020-02-29' THEN pax+free ELSE 0 END AS total,但不要检查索引是否存在性能问题。 -
@AliGüzel 下面的查询将运行得更快,因为
book_day上有一个索引 -
不知
book_days列的格式是DATE,还是DATE...
标签: mysql sql sum query-performance calculated-columns