【发布时间】:2016-10-27 17:18:14
【问题描述】:
我正在尝试编写一个 sql 查询来返回给定位置每天的关闭时间和当天最终销售之间的差异。
数据库架构类似于:
Store_Closing_table(storeCloseTime, storeId) store_sale_table(saleTime, storeID)
我写了以下(伪代码):
select max(storeCloseTime),
max(saleTime), datediff(mi, max(saletime),
max(storeCloseTime)) as timeDifference, storeID
from store_closing_table a
inner join store_sale_table b
on a.storeid = b.storeid
group by storeid, convert(date, saletime), convert(date, storeCloseTime)
它返回当天的最终销售和商店关闭时间之间的时间差,但仅适用于最近的日期(即最大日期)。
我不确定如何获取每天的最大销售日期和每天的最大商店关闭时间(在某些情况下商店一天“关闭”一次以上),然后获取两者之间的日期差异.
任何建议将不胜感激。
编辑:我修改了查询以包含 group by 子句,这让我更接近,但我得到了每个商店销售和每个商店关闭时间之间的差异。
即 商店在 3 天内有 3 次销售。我正在接近 1 - 销售 a,接近 1 - 销售 b,接近 1 - 销售 c,接近 2 - 销售 a,接近 2 - 销售 b,接近 2 - 销售 c,接近 3 - 销售 a,接近 3 - 销售b,关闭 3 - 销售 c。
有什么想法吗?
【问题讨论】:
-
最后是否只需要“GROUP BY storeID , CAST(saletime as DATE)”
-
我认为您还需要 Group by 中的 storeID。
-
@WEI_DBA - 是的,只是添加了 - 他可以将 CAST(saletime as DATE) 放在选择中 - 可以吗?
-
@AndrewDeighton,我想是的,因为它也在 Group By 中。
-
storeCloseTime和saleTime的数据类型是什么?
标签: mysql sql sql-server