获取同类产品中最受欢迎的产品
Get the most popular product in the same category
我的 Postgres 数据库中有 2 个 table。
第一个 table 'products': 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);
我的第二个 table '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 分钟里,我一直坐在这里挠头,试图找出解决方案,但直到现在还没有解决。
嗯。 . .您可以在将表连接在一起后使用 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;
我的 Postgres 数据库中有 2 个 table。
第一个 table 'products': 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);
我的第二个 table '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 分钟里,我一直坐在这里挠头,试图找出解决方案,但直到现在还没有解决。
嗯。 . .您可以在将表连接在一起后使用 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;