计算客户购买的第一笔订单数

时间:2019-01-26 22:35:48

标签: mysql count subquery

我一直在努力解决这个编码问题,而当我与我越来越近时,我似乎无法理解。

我有两个桌子

表1-产品

列:

Vendor Id, Vendor Name, Product Id, Product Name, Brand

表2-订单

列:

Customer Id, OrderDateTime, Product Id, Vendor Id

我正在尝试按供应商查找每种产品的“首次购买”数量

SELECT B.PRODUCTID, B.PRODUCTNAME, B.BRAND, B.VENDOR , COUNT(DISTINCT(B.CUSTOMERID)) AS 'FIRST PURCHASE COUNT' 
FROM
(SELECT A.CUSTOMERID, MIN(A.ORDERDATETIME) AS FIRSTPURCHASE, A.VENDORID, A.PRODUCTID, C.PRODUCTNAME, C.BRAND, C.VENDORNAME
FROM ORDERS A

JOIN PURCHASES C
ON C.VENDORID = A.VENDORID

GROUP BY A.CUSTOMERID, A.VENDORID, C.PRODUCTID) AS B

GROUP BY B.PRODUCTID, B.VENDORID

我想在以下几列中创建结果:

Product Id, Product Name, Brand, Vendor Name, First Purchase Count

我还希望Vendor Name输出是从“ vendorxyz”购买的,而不仅仅是“ vendorxyz”,其中“ vendorxyz”是卖方的名称 并且没有供应商列出的输出为“其他供应商”

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

以下查询可能是您要查找的内容(由于您未提供示例数据和预期的输出,因此我无法对其进行测试)。

它使用带有相关子查询的.map(not(date::isBefore))子句在订单表中搜索每个客户的第一笔订单,然后按产品和供应商进行汇总。

NOT EXISTS