【发布时间】:2014-10-17 14:53:49
【问题描述】:
有如下表(列):
-
Clients(clientID) -
Houses(houseID) -
Visits(clientID, houseID, visit_date) -
Contracts(contractID, houseID, clientID,rentDate_from,rentDate_end)
我在编写此类 SQL 查询时遇到问题:
- 每位客户在租用其中一间之前访问了多少次房屋?
很容易计算每个客户的总访问次数,按clientID 列出所有访问+ 组,并为每个组选择count(*)。
假设这是 select_1,而 select_2 列出了所有客户的所有合同。
Select_1 不是答案,因为只能对组执行计数,其中:
-
在 select_2 中至少有 1 行“喜欢”行(这意味着至少有一个已访问的房屋被租用,因为可能发生客户访问的房屋很少,但租用了其他未访问的房屋)。我的想法是将 select_1 和 select_2 与:
其中 s1.clientID = s2.clientID 和 s1.houseID = s2.houseID
-
每个组的所有行(访问)的日期必须在同一天或早于合同日期
也许:
datediff(day, s1.visit_date, s2.rentDate_from) >= 0
(为什么这个论坛按回车后有1个空行?)
【问题讨论】:
-
这听起来更像是您向我们提出要求并要求我们为您编写。到目前为止,您尝试过什么?
标签: sql-server