Php 如何根据多个房间价格获得平均价格
我有一张名为room_prices的表,根据指定的日期存储不同的价格。这是示例数据Php 如何根据多个房间价格获得平均价格,php,sql,codeigniter,Php,Sql,Codeigniter,我有一张名为room_prices的表,根据指定的日期存储不同的价格。这是示例数据 id room_id date_from date_to price 1 1 3500.00 25 1 7/28/2012 7/29/2012 3600.00 27 1 8/24/2012 8/27/2012 3000.00 49 1 11/12/2012 11/16/2012
id room_id date_from date_to price
1 1 3500.00
25 1 7/28/2012 7/29/2012 3600.00
27 1 8/24/2012 8/27/2012 3000.00
49 1 11/12/2012 11/16/2012 4000.00
第一行是房间1(房间id=1)的默认价格
当客人预订房间时,系统将首先查看房间价格表上的价格。如果在表中找到guest保留的日期,它将根据所选日期获得价格,而不是默认价格
前
如果客人在2012年10月11日至2012年11月11日期间预订了房间,则价格应为3500。
如果客人在2012年12月11日至2012年14月11日期间预订房间,则价格应为4000
如果客人在2012年10月11日至2012年13月11日期间预订房间,则平均价格应为3750。见下表:
11/10/2012 3500
11/11/2012 3500
11/12/2012 4000
11/13/2012 4000
3750
所以我的问题是,是否有一个SQL代码可以得到平均价格
更新:
我尝试了这个sql,但没有成功:
SELECT avg(price) as avg_price
FROM lf_rooms_prices
WHERE room_id = 1
AND ((DATE_FORMAT(date_from, '%m/%d/%Y') >= '11/10/2012'
AND DATE_FORMAT(date_from, '%m/%d/%Y') < '11/10/2012')
OR (DATE_FORMAT(date_to, '%m/%d/%Y') > '11/13/2012'
AND DATE_FORMAT(date_to, '%m/%d/%Y') <= '11/13/2012'))
选择平均(价格)作为平均价格
从lf_房间_价格
其中房间id=1
和((日期格式(日期自,'%m/%d/%Y')>='2012年11月10日'
和日期格式(日期从,'%m/%d/%Y')<'11/10/2012')
或(日期格式(日期至,“%m/%d/%Y”)>“2012年11月13日”
和DATE_格式(DATE_to,'%m/%d/%Y')有AVG()
函数,因此要获得平均价格,您的查询应该如下所示:
SELECT AVG(`price`) FROM `room_prices` GROUP BY `room_id`
请参阅文档。当然,您可以在查询中添加位置,以缩小平均值所需的数据集:
SELECT AVG(`price`) FROM `room_prices` WHERE <CONDITIONS> GROUP BY `room_id`
从“房间价格”中选择平均价格('price'),其中按“房间id”分组
编辑:
完整查询:
SELECT AVG(`price`) FROM `room_prices`
WHERE `room_id` = 1
AND ((DATE_FORMAT(date_from, '%m/%d/%Y') >= '11/10/2012'
AND DATE_FORMAT(date_from, '%m/%d/%Y') < '11/10/2012')
OR (DATE_FORMAT(date_to, '%m/%d/%Y') > '11/13/2012'
AND DATE_FORMAT(date_to, '%m/%d/%Y') <= '11/13/2012'))
GROUP BY `room_id`
从“房间价格”中选择平均价格(`price`)
其中,`room\u id`=1
和((日期格式(日期自,'%m/%d/%Y')>='2012年11月10日'
和日期格式(日期从,'%m/%d/%Y')<'11/10/2012')
或(日期格式(日期至,“%m/%d/%Y”)>“2012年11月13日”
和日期格式(日期到,'%m/%d/%Y'))这是room_prices表中room 1的所有价格的平均值,但这不是op想要的。您可以将WHERE
添加到查询中,以缩小您想要的平均值的数据集。@WebnetMobile.com WHERE子句是什么?再次更新-我之前过度聪明,并且在中意外忽略了room_id
de>WHERE
@WebnetMobile.com它不返回任何值。