【发布时间】:2019-10-07 18:02:54
【问题描述】:
我有两个名为Orders 和Products 的表,order 表包含客户的特定订单数量,该订单中包含的产品在Products 表中。
我的要求是获取最常出现的产品的总订单数。 表示这些产品产品 1、产品 2、产品 3 的订单总数是多少,如果订单包含 10 个产品,其中包含产品 1、产品 2 和产品 3,则应计算该订单。
对于一个 order_id,可能会有多个产品,我对如何获得此结果感到困惑。有人可以分享或建议如何获得此结果的解决方案吗?
我正在使用 PostgreSQL。
以下是示例查询,
SELECT
"Orders"."order_id",pr.product_name
FROM
"data"."orders" AS "Orders"
LEFT JOIN data.items i On i."order_id"="Orders"."order_id"
LEFT join data.products pr on pr."product_id"=i."product_id"
WHERE TO_CHAR("Orders"."created_at_order",'YYYY-MM-DD') BETWEEN '2019-02-01' AND '2019-04-30'
ORDER BY "Orders"."order_id"
Desired Result 将是这样的(3 列),购买次数最多的产品组合以及发生订单的数量。
产品 1、产品 2、产品 3 等.....,订单数量
这是样本数据输出,最需要组合购买的产品列表。(目前我只给出了3列样本,但可能会根据订单中的产品数量而有所不同)。
例子
【问题讨论】:
-
样本数据和期望的结果会有所帮助。此外,您的文本说“两个表”,但您的代码引用了三个表。非常混乱。
-
嗨,戈登,非常感谢您的及时回复!在这种情况下,第三个表项并不重要,因为它用于链接其他两个表。我要显示的数据是前两个表。我将更新示例数据和所需的结果
标签: sql postgresql