mysql - 基于工作日的两天之间的费率
问题描述
CREATE TABLE `hotelrates` (
`hotel_id` int(11) NOT NULL,
`date_from` date DEFAULT NULL,
`date_to` date DEFAULT NULL,
`sunday_rate` float DEFAULT NULL,
`monday_rate` float DEFAULT NULL,
`tuesday_rate` float DEFAULT NULL,
`wednesday_rate` float DEFAULT NULL,
`thuesday_rate` float DEFAULT NULL,
`friday_rate` float DEFAULT NULL,
`saturday_rate` float DEFAULT NULL,
PRIMARY KEY (`hotel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into hotelrates
set hotel_id = '100',
date_from = '2021-01-01',
date_from = '2021-12-31',
sunday_rate = '75',
monday_rate = '75',
tuesday_rate = '75',
wednesday_rate = '75',
thuesday_rate = '100',
friday_rate = '100',
saturday_rate = '100';
我需要一个 SQL 查询来获取基于工作日的两天之间的费率,
例如 2021-06-15 到 2021-06-19,总费率为 350(350 = tuesday_rate + wednesday_rate + thuesday_rate + friday_rate)
解决方案
试试下面的解决方案。使用此解决方案,您必须知道 BETWEEN 运算符是包容性的。这意味着包括开始值和结束值。
CREATE TABLE `hotelrates` (
`hotel_id` INT(11) NOT NULL,
`date_from` DATE DEFAULT NULL,
`date_to` DATE DEFAULT NULL,
`weekday` INT DEFAULT NULL,
`rate` FLOAT DEFAULT NULL
);
INSERT INTO hotelrates
( hotel_id, date_from, date_to, weekday, rate)
VALUES
('100', '2021-01-01', '2021-12-31', '6', '75'), -- Sunday
('100', '2021-01-01', '2021-12-31', '0', '75'), -- Monday
('100', '2021-01-01', '2021-12-31', '1', '75'), -- Tuesday
('100', '2021-01-01', '2021-12-31', '2', '75'), -- Wednesday
('100', '2021-01-01', '2021-12-31', '3', '100'), -- Thursday
('100', '2021-01-01', '2021-12-31', '4', '100'), -- Friday
('100', '2021-01-01', '2021-12-31', '5', '100'); -- Saturday
SELECT
SUM(rate) AS total_rate
FROM
hotelrates
WHERE
weekday BETWEEN WEEKDAY('2021-06-15') AND WEEKDAY('2021-06-19');
推荐阅读
- php - PHP:如何使用 preg_split 和匹配数据类型
- java - 与 intersectLinePolygon 相交的多边形和线行为不正常
- ios - 使用 UICollectionView 观察领域 - 竞争条件
- java - 无法将元素扫描到数组中
- c# - 从 StreamingAssets 文件夹读取/加载图像文件
- css - @font-face 不工作:(
- xslt - XSLT 2.0 重新格式化日期
- spring - Spring Boot 2 - 未找到安全标签库,java jsp 中的标签库版本错误
- python - 使用 KNN、SoftImpute 进行数据插补
- android - Xamarin Android Player - VBoxManage 命令失败