我有一个订单表,用于存储来 self 们公司内多个站点的订单。在表中,我们有字段 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
关于sql - 统计在多个网站上订购的用户的订单数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508941/