【问题标题】:Selecting the vendor with highest Ratio and lowest price per product选择每个产品具有最高比率和最低价格的供应商
【发布时间】:2020-08-03 01:40:27
【问题描述】:

从我的订单表中,我试图让每个产品的供应商具有最高比率订单和最低价格。

      select v.[Vendor_pk], p.[Product_pk],o.[UnitPrice], o.[RatioOrder], o.[TotalPrice]
  from [DWH].[ORDERSfact] o
  inner join [DWH].[VENDORdim] v
  on o.[Vendor_pk]=v.[Vendor_pk]
  inner join [DWH].[PRODUCTdim] p
  on o.[Product_pk]= p.[Product_pk]

  order by 2, 4 desc, 3

我该怎么做?

【问题讨论】:

  • 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask展示你的能力。
  • 这部分是常见问题解答。在考虑发布之前,请阅读手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。

标签: sql sql-server max inner-join min


【解决方案1】:

我试图让每个产品的供应商都获得最高比率订单和最低价格。

使用row_number():

select vp.*
from (select v.[Vendor_pk], p.[Product_pk],o.[UnitPrice], o.[RatioOrder], o.[TotalPrice],
             row_number() over (partition by product_pk order by ratioorder desc, price asc) sa seqnum
      from [DWH].[ORDERSfact] o join
           [DWH].[VENDORdim] v
           on o.[Vendor_pk] = v.[Vendor_pk] join
           [DWH].[PRODUCTdim] p
           on o.[Product_pk] = p.[Product_pk]
     ) vp
where seqnum = 1;

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2021-05-03
    • 2017-12-05
    • 2016-05-28
    • 2015-11-05
    • 2016-04-25
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多