【问题标题】:DB2 SQL Select Distinct Data Based On WeightingDB2 SQL 基于加权选择不同的数据
【发布时间】:2017-05-04 15:03:35
【问题描述】:

我有一个类别表,每个类别都有一个权重。

我有一个产品和类别表,它们出现在其中,我想为每个产品选择权重最高的类别。

我曾尝试使用 Distinct,但它似乎不想与 sort 一起使用。

我的基本查询是:

select a.product, a.category from prodcattable a
join categorytable b on a.category=b.category
order by product, weighting desc

当一个产品出现在多个类别中时,我只想返回一行,包含产品和排名最高的类别。

这需要在 DB2 中工作,因为我需要在 iSeries 上运行它。

我希望我可以使用结果与主产品表进行比较,以查看类别是否发生了变化,而无需通读整个主产品表,并为每个产品找到权重最高的类别。拥有超过 75,000 种产品,需要执行大量查询。

【问题讨论】:

    标签: sql select distinct db2-400


    【解决方案1】:

    一种方法使用row_number()

    select pc.*
    from (select p.product, p.category,
                 row_number() over (partition by p.product order by weighting desc) as seqnum
          from prodcattable p join
               categorytable c
               on p.category= c.category
         ) pc
    where seqnum = 1;
    

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多