mysql - Mysql 计算多个 SUM() 变量
问题描述
我想计算 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
解决方案
保留BETWEEN '2020-01-01' AND '2020-02-29'
在 where 子句中。
确保 book_day 列上有索引
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-29' THEN pax+free ELSE 0 END) as February,
(SUM(CASE WHEN book_day BETWEEN '2020-01-01' AND '2020-02-29' THEN pax+free ELSE 0 END) ) as total
FROM rezervations
WHERE
book_day BETWEEN '2020-01-01' AND '2020-02-29'
推荐阅读
- javascript - Google 表格秒表
- angular - 在过滤器中搜索数据时,我想在 Angular SlickGrid 中使用空数据集搜索结果时显示“没有要显示的数据”
- vue.js - 如何在 Quasar Vue Google Maps 上修复无法读取 null 的属性“地图”?
- c# - C#如何通过字符串获取对象属性?
- javascript - JQuery动态验证多维数组中的文件大小
- c++ - 如何继承获取类对象c ++的类构造函数
- ios - 如何将日期(以毫秒为单位)设置为日期选择器?
- python - 如何在 3d 空间中找到段中的最近点
- python - 如何在python中处理文件中的单词和数字
- highcharts - 当一个图表与另一个图表重叠时,如何使图表透明?