我尝试在Sequel Pro中使用内部联接运行查询以使用此功能获取最新的记录/发票:
SELECT tt.Hotel_Property, tt.Preferred_Hotel_Status
FROM hotel_detail tt
INNER JOIN
(SELECT Hotel_Property, MAX(STR_TO_DATE (`Invoice_Date`, '%m/%d/%Y')) AS MaxDateTime
FROM hotel_detail
GROUP BY Hotel_Property) groupedtt
ON tt.Hotel_Property = groupedtt.Hotel_Property
AND tt.Invoice_Date = groupedtt.MaxDateTime
但它正在运行查询很长一段时间,我不确定它是否会实际执行(等待14分钟后取消它)。我知道有很多数据需要解决,但是想知道是否有人有建议让它运行得更快?
*理想情况下,我希望每个酒店物业都有一条记录,提供最近的发票日期和与该最大发票相关的状态
谢谢!
答案 0 :(得分:0)
根据我的知识,续集专业版使用MySQL,因此您可能无法使用分析函数,但请尝试以下操作:
SELECT
Hotel_Property
, Preferred_Hotel_Status
, MAX(STR_TO_DATE (`Invoice_Date`, '%m/%d/%Y')) OVER(PARTITION BY hotel_property) AS MaxDateTime
FROM hotel_detail
如果这不起作用,那么我建议根据日期在“块”中运行查询。因此,可以通过使用WHERE子句一次运行一天。即:
SELECT tt.Hotel_Property, tt.Preferred_Hotel_Status
FROM hotel_detail tt
INNER JOIN
(SELECT Hotel_Property, MAX(STR_TO_DATE (`Invoice_Date`, '%m/%d/%Y')) AS MaxDateTime
FROM hotel_detail
WHERE DATE = "the_date_you_want_to_run"
GROUP BY Hotel_Property) groupedtt
ON tt.Hotel_Property = groupedtt.Hotel_Property
AND tt.Invoice_Date = groupedtt.MaxDateTime
WHERE DATE = "the_date_you_want_to_run"
然后,您可以分别查看不同日期的结果,或者只是将它们插入到新表中,您可以在其中执行更多分析。
答案 1 :(得分:0)
尝试使用相关子查询:
hotel_detail(hotel_property, invoice_date)
这可以利用date
上的索引。如果使用datetime
或git branch -a
的本机SQL格式正确存储日期,索引将更有效。