我的模式是沿着以下幾點:如何編寫一個SQL查詢以查找此數據模型中業務的頻繁客戶?
- 業務有N個位置。
- 一個地點有N筆交易。
- 每筆交易都有一位客戶。
- 每筆交易都屬於一個交易組。
如何編寫一個查詢,查找所有誰擁有在特定的業務至少k事務組客戶,其中K爲整數? (我希望結果包含給定客戶不超過一次。)
我的模式是沿着以下幾點:如何編寫一個SQL查詢以查找此數據模型中業務的頻繁客戶?
如何編寫一個查詢,查找所有誰擁有在特定的業務至少k事務組客戶,其中K爲整數? (我希望結果包含給定客戶不超過一次。)
使用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」,但隨意使用一個參數或其他適合您喜歡的整數。
SELECT Customerid
From Transaction t
INNER JOIN TransactionGroup tg
ON t.transactionid = tg.transactionid
GROUP BY Customerid
HAVING COUNT(DISTINCT TransactionGroup) => @TransactionCountDesired
這是要點,您可能需要進一步擴展JOIN
s。
只要你GROUP BY
客戶,並有一個COUNT(DISTINCT...)
爲您的HAVING
檢查交易組數你不會有任何處理方式。
它更容易在將來發布表結構。我不得不在你的桌子上鉛筆,以便了解你以後的想法。 – JonH 2011-12-15 20:07:21
@JonH:道歉不清楚。下次我會更加明確。 – 2011-12-15 20:11:48