微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何找出商店中购买较少的商品؟

如何解决我如何找出商店中购买较少的商品؟

我们有两张桌子,第一个

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] 举报,一经查实,本站将立刻删除。