簡體   English   中英

計算在多個站點上訂購的用戶的訂購數量

[英]Count number of orders from users who order on multiple sites

我有一個訂單表,用於存儲公司內多個站點的訂單。 在表中,我們有字段userid,ordernumber和sitename。 我想要得到的是從我們2個或更多站點中訂購的用戶數量。

這是我開始的:

SELECT
  o.ordernumber,
  o.sitename,
  o.userdbid,
  o2.sitename,
  o2.userdbid,
  o2.ordernumber
FROM
  orders o
INNER JOIN
  orders o2
ON
  o.userdbid = o2.userdbid
WHERE
  o.sitename != o2.sitename
ORDER BY
  o.userdbid;

這不是正確的,但是我認為可以做到。 任何幫助或指示將不勝感激。

您將需要一個HAVING子句將總計COUNT()與2進行比較,其中您已按userbid分組。 確保在匯總的COUNT()使用DISTINCT ,以便獲得多個站點,而不僅僅是多個訂單。

SELECT
  o.userbid,
  COUNT(DISTINCT o.sitename) AS num_order_sites
FROM
  orders o
GROUP BY o.userbid
HAVING COUNT(DISTINCT o.sitename) >= 2

如果您只尋找從多個站點訂購的用戶,則實際上不需要進行自我加入。 您只需要這個。

SELECT
  o.userdbid
FROM
  orders o
GROUP BY o.userdbid
HAVING 
    COUNT(o.sitename) > 1

如果您想查找其他信息,可以加入這些結果。

例如

SELECT 
     o.ordernumber,
     o.sitename,
     o.userdbid
FROM   orders o 
   INNER JOIN (SELECT o.userdbid 
               FROM   orders o 
               GROUP  BY o.userdbid 
               HAVING Count( DISTINCT o.sitename) > 1) morethanOne 
           ON o.userdbid = morethanone.o.userdbid 

更新:請注意邁克爾關於DISTINCT 的觀點

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM