我一直在努力解决这个编码问题,而当我与我越来越近时,我似乎无法理解。
我有两个桌子
表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”是卖方的名称
并且没有供应商列出的输出为“其他供应商”
任何帮助将不胜感激
答案 0 :(得分:0)
以下查询可能是您要查找的内容(由于您未提供示例数据和预期的输出,因此我无法对其进行测试)。
它使用带有相关子查询的.map(not(date::isBefore))
子句在订单表中搜索每个客户的第一笔订单,然后按产品和供应商进行汇总。
NOT EXISTS