我的模型如下:
如何编写查找在特定企业中至少拥有K个交易组的所有客户的查询,其中K是整数? (我希望结果只包含给定客户一次。)
答案 0 :(得分:4)
使用having
!
select
c.CustomerID,
count(distinct tg.TransactionGroupID) as GroupCount
from
Customers c
inner join Transaction t on
c.CustomerID = t.CustomerID
inner join Location l on
t.LocationID = l.LocationID
inner join Business b on
l.BusinessID = b.BusinessID
inner join TransactionGroup tg on
t.TransactionGroupID = tg.TransactionGroupID
where
b.BusinessName = 'Some business'
group by c.CustomerID
having count(distinct tg.TransactionGroupID) > 4
如果您不需要交易组信息,您只需加入交易表并放弃第二次加入。
我在这里使用了“4”,但可以随意使用一个适合你想象的参数或其他整数。
答案 1 :(得分:1)
SELECT Customerid
From Transaction t
INNER JOIN TransactionGroup tg
ON t.transactionid = tg.transactionid
GROUP BY Customerid
HAVING COUNT(DISTINCT TransactionGroup) => @TransactionCountDesired
这是要点,您可能需要进一步扩展JOIN
。
只要您GROUP BY
客户COUNT(DISTINCT...)
对您的HAVING
检查交易组计数,您就不会有任何欺诈行为。