繁体   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