![](/img/trans.png)
[英]How to count the number of orders and the number of returns from same order id?
[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.