【发布时间】:2018-04-30 11:18:21
【问题描述】:
给定包含以下列的表:custID、startDate、endDate 等。
如何计算客户在同一时间段内生成的最大行数。
我的想法是,如果您执行递归 JOIN 并消除相同的行,您可以将 A.startDate 与 B 开始和结束日期进行比较。
我只是不明白如何执行这个迭代过程来找到可能的最高数字。
我现在拥有的东西看起来像这样,但它似乎没有按预期工作。
SELECT DISTINCT A.custID, COUNT(A.custID) AS Concurrently
FROM T_Loan A JOIN T_Loan B
WHERE A.custID = B.custID AND NOT (A.endDate = B.endDate AND A.loanDate = B.startDate) AND A.startDate<= B.endDate AND A.startDate>= B.startDate
GROUP BY custID
HAVING Concurrently > 0;
任何意见或建议将不胜感激
【问题讨论】:
-
SELECT B.custID, B.endDate AS 'end', B.startDate AS 'start', COUNT(*) FROM T_Loan A JOIN T_Loan B WHERE A.custID = B.custID GROUP BY B .endDate,B.startDate;目前,计数只是告诉我来自 custID 的条目数,但我在想如果我在计数中放置一个子查询,将该行与来自相应客户的所有可能行连接起来,并尝试在那里应用过滤器,我可能会得到东西。
标签: mysql subquery iteration conditional-statements