首页 > 解决方案 > 获取同类产品中最受欢迎的产品

问题描述

我的 Postgres 数据库中有 2 个表。

第一个表“产品”:https ://imgur.com/a/Ru0IcuY

CREATE TABLE if not exists PRODUCTS (product_id varchar PRIMARY KEY, product_name varchar, price int, gender varchar,
category varchar, sub_category varchar, sub_sub_category varchar);

我的第二个表“pop_products”:https ://imgur.com/a/6U3zBro 这包含产品 ID 和它们已售出的次数。注意:“pop_products”中的“product_id”不是外键

CREATE TABLE if not exists POP_PRODUCTS (product_id varchar PRIMARY KEY, freq int);

我的目标是找到同类产品中最受欢迎的产品。

到目前为止我的代码:

SELECT product_id FROM products 
HERE category LIKE '""" + category[0] + """'
AND product_id NOT LIKE CAST(""" + productid + """ AS varchar)

在过去的 30 分钟里,我一直坐在这里挠头,试图找出解决方案,但直到现在才解决。

标签: pythonsqlpostgresqlpsycopg2

解决方案


嗯。. . 您可以distinct on在将表格连接在一起后使用:

select distinct on (p.category) p.*, pp.freq
from pop_products pp join
     products p
     using (product_id)
order by p.category, pp.freq desc;

推荐阅读