sql - 统计在多个网站上订购的用户的订单数量

标签 sql sql-server

我有一个订单表,用于存储来 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/

相关文章:

SQL Server : error on column add

php - Ajax 不适用于我的所有表单

sql - B和C有多少个A?

sql-server - 将本地数据库更改发布到远程数据库 SQL Server 2012

SQL 2008 设置兼容级别

sql - 查询 Oracle 以获取 ORA 代码错误详细信息

php - 在 MySQL 中使用 Group BY 获取行

mysql - 表名可以用作另一个表的字段吗?

sql-server - SQL Server 逆透视两列

sql - 将两个表从第一个日期开始连接到第二个日期范围内