![](/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.