我正在开展一个小型的Web项目,我想知道我需要使用什么SQL才能找到预订量最少的月份。
我有一个Booking
表:
我有一个Package
表:
我有一个HolidayMaker
表:
我认为这可能与嵌套的SELECT
语句有关,但我并不完全确定。
谢谢,詹姆斯。 : - )
答案 0 :(得分:2)
使用MONTHNAME
和GROUP BY
COUNT
。
SELECT MONTHNAME(Bo_Datebooked), COUNT(Booking_ID)
FROM Booking
GROUP BY MONTHNAME(Bo_Datebooked)
ORDER BY COUNT(Booking_ID) ASC
答案 1 :(得分:2)
以下查询返回每个月的预订金额:
SELECT DATE_FORMAT(Bo_DateBooked, '%Y-%m') AS BookingMonth,
SUM(Package_Price) AS MonthlyAmount
FROM Booking
JOIN Package
ON Booking.Package_ID = Package.Package_ID
GROUP BY DATE_FORMAT(Bo_DateBooked, '%Y-%m');
使用嵌套的SELECT
,您可以获得最低限度。
答案 2 :(得分:1)
这只是limit
的汇总:
select date_format(bo_datebooked, '%Y-%m') as yyyymm, count(*)
from booking b
group by date_format(bo_datebooked, '%Y-%m')
order by count(*) desc
limit 1;
答案 3 :(得分:1)
如果您有兴趣查看结果,只有'几个月,不考虑年数:(即所有1月的所有预订,无论哪一年):
SELECT MONTHNAME(Bo_Datebooked) as month, COUNT(1) as num_reservations
FROM Booking
GROUP BY month
ORDER BY num_reservations ASC
/* additionality add...
/* LIMIT 1 */
/* ...to see only the lower result */
如果你担心每年的不同月份(即:从2016年1月开始的研究,2012年1月的预订......):
SELECT CONCAT(MONTHNAME(Bo_Datebooked), YEAR(Bo_Datebooked)) as date, COUNT(1) as num_reservations
FROM Booking
GROUP BY date
ORDER BY num_reservations ASC
/* additionality add...
/* LIMIT 1 */
/* ...to see only the lower result */
警告:任何一项都不会显示0个月的预订!!!
答案 4 :(得分:0)
你可以使用这个sql。我在我的ms sql server中测试了这个。如果它不工作只是找到类似的mysql服务器语法。好 ?
SELECT CONVERT(CHAR(3), DATENAME(MONTH, Bo_Datebooked)), COUNT(Booking_Id) FROM Booking
GROUP BY CONVERT(CHAR(3), DATENAME(MONTH, Bo_Datebooked))
ORDER BY COUNT(Booking_Id) ASC
希望这会对你有所帮助