如何解决我如何找出商店中购买较少的商品؟
我们有两张桌子,第一个是
products (pro_id,pro_name,supleir_id,quantity,unit,price,enter_date)
第二个表是
customers(cus_id,cus_name,purchased_item,pro_id,total_price,date,invoice)
我们想使用 PLsql 创建一个过程来了解客户购买的产品较少
解决方法
我认为“较少购买”是指出现次数最少的产品 ID。但是,这是否意味着从客户那里购买的最低次数(pro_id 的计数)或最低的销售商品数量(数量总和)仍然不明确。
无论哪种方式,一种方法都会对目标值进行排名,然后仅选择排名最低的行。它创建一个子查询因子(通常称为 CTE)以按数量对来自客户表的产品进行排名。然后将结果与 Product 表连接起来。 (见Demo)
with less_purchased(pro_id,number_purchased) as
( select pro_id,cnt
from (-- rank each product by quantity
select pro_id,cnt,dense_rank() over( order by cnt desc) rnk
from (-- get sum of quantity for each product
select pro_id,sum(quantity) cnt
from customers
group by pro_id
) sum_query
) rank_query
-- discard all but rank 1
where rnk = 1
)
-- get product information and quantity purchased
select p.*,lp.number_purchased
from products p
join less_purchased lp on (lp.pro_id = p.pro_id);
以上可能会产生具有多个产品行的输出,因为具有相同数量的产品将具有相同的等级。
要获得相同的购买次数,请将 sum(quantity) 替换为 count(*) 并删除 desc 或 order by。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。