我有一张大致像这样的桌子。有数千行。
booking_date checkin_date ...some other columns .... booking_value
22-mar-2016 29-mar-2016 ........................... $150
01-apr-2016 17-may-2016 ........................... $500
09-apr-2016 09-apr-2016 ........................... $222
17-apr-2016 23-apr-2016 ........................... $75
19-apr-2016 31-july-2016 ........................... $690
03-May-2016 07-May-2016 ............................. $301
.
.
.
.
我正在尝试计算2016年4月的每日预订数量和每天的预订价值。第二部分是计算多少笔预订的Booking_date和Checking_date相同。
我对SQL非常陌生。我可以在纸上提出逻辑,但似乎无法弄清楚如何继续编写代码。
答案 0 :(得分:1)
您可以在下面的代码中尝试此操作-
memcpy
答案 1 :(得分:1)
对于第一个问题,您可以尝试
Select booking_date
,count(*) as Number_of_bookings
,Sum(booking_value) as value
From table_name
Where booking_date between '01-apr-2016' and '30-apr-2016'
group by booking_date:
或者您可以在过滤器中使用month()和year()函数。
对于第二个问题,请尝试
Select booking_date
,checkin_date
,count(*)
from table_name
where booking_date=checkin_date
group by booking_date, checkin_date
答案 2 :(得分:1)
我建议以下查询:
SELECT CAST(booking_date AS DATE), COUNT(*) as Number_of_Booking,
SUM(CAST(booking_date AS DATE) = CAST(checkin_date AS DATE)) as count_with_same_date,
SUM(booking_value) as booking_value
FROM t
WHERE booking_date >= '2016-04-01' AND
booking_date < '2016-05-01'
GROUP BY CAST(booking_date AS DATE);
尤其要注意对日期的过滤。直接比较允许MySQL使用索引。
同一天的数字计算使用MySQL的一个不错的功能,其中布尔值在数字上下文中被视为数字。