【问题标题】:Find best value - PostgreSQL寻找最佳价值 - PostgreSQL
【发布时间】:2017-11-18 16:58:46
【问题描述】:

我生成了下表:

  here  | there |      cost
 -------+-------+--------------+
  {1,1} | {1,2} |          0.0 | 
  {1,1} | {2,1} |          0.0 | 
  {1,2} | {1,3} |          1.0 |      
  {2,1} | {2,2} |          1.0 |
  {2,1} | {3,1} |          1.0 |
  {1,2} | {2,2} |          1.0 |      
  {1,3} | {1,4} |          2.0 |       
  {2,2} | {2,3} |          2.0 |       
 ...
  {1,2} | {1,3} |          3.0 |

如您所见,我对这对 {1,2}, {1,3} 有两种不同的成本 我怎样才能设法保持每对的最佳价值?

【问题讨论】:

    标签: sql postgresql greatest-n-per-group


    【解决方案1】:

    此查询将以最低成本返回所有唯一对(此处、此处):

    SELECT
        here,
        there,
        MIN(cost)
    FROM
        table_name
    GROUP BY
        here,
        there;
    

    【讨论】:

      【解决方案2】:

      如果您要保留整行(包含更多列),请使用DISTINCT ON

      SELECT DISTINCT ON (here, there) *
      FROM   tbl
      ORDER  BY here, there, cost;
      

      相关:

      另外,由于您似乎在使用数组(表定义未公开),请注意'{1,2}''{2,1}' 的不相等性。如果您需要将其评估为相等,请将您的表定义和 Postgres 版本添加到问题中,我将添加一个解决方案。相关:

      【讨论】:

        猜你喜欢
        • 2016-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多