【问题标题】:How to select max value from rows and join to another table如何从行中选择最大值并加入另一个表
【发布时间】:2020-11-23 21:07:55
【问题描述】:

我正在尝试就值列的最大值连接两个表。我想根据加入时的最大值产生如下所示的预期结果

select * from order
-------------------------
| ID    |  value | Name |
-------------------------
|  1    |  23    | REM  |
|  2    |  0     | SER  |
|  3    |  13    | MH   |
|  4    |  3     | MH   |
|  5    |  1     | MP   |
-------------------------

select * from product
-------------------------
| ID    | value  | Name |
-------------------------
|  1    |   2    | ABC  |
|  2    |  2    | DEG  |
|  3    |  17    | XYZ  |
-------------------------

Desired result:
-------------------------
| ID    | Value  | Name |
-------------------------
| 1     |  23    | REM  |
| 2     |  2    | DEG  |
| 3     |  17    | XYZ  |
| 4     |   3    | MH   |
| 5     |   1    | MP   |
-------------------------

我尝试过类似下面的方法,但它没有从其他表中获取值(NAME)

SELECT
 MAX(IF(a.value >b.value , a.value ,b.value )) AS Value
  from order a left join product b on a.ID= b.ID

请建议如何从这两个表中获得预期结果。

【问题讨论】:

    标签: mysql sql hive google-bigquery


    【解决方案1】:

    以下是 BigQuery 标准 SQL

    #standardsql
    select as value array_agg(struct(id, value, name) order by value desc limit 1)[offset(0)]
    from 
    (
      select * from `project.dataset.order`
      union all
      select * from `project.dataset.product`
    )
    group by id    
    

    有输出

    【讨论】:

    • 只是想检查一下-您只是根据价值订购吗?不与其他表比较价值?
    • 正如我在问题中提到的 - 我想与其他表进行比较并取最大值
    • 就是这样。你看到它不这样做吗?然后提供示例:o)
    • 刚刚修改了有问题的样本
    • 对我仍然有效 - 获得预期结果 - 你看到了什么问题?
    【解决方案2】:

    您可以使用full join

    select id,
           (case when p.val is null or p.val < o.val then o.val else p.val end),
           (case when p.val is null or p.val < o.val then o.name else p.name end)     
    from product p full join
         order o
         using (id);
    

    我只是觉得这是思考问题的最简单方法。

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2017-05-15
      • 2023-01-06
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多