简体   繁体   English

根据另一列获取每列的最小值

[英]Get the lowest value per column based on another column

Per each product_id based on the column year , I would like to get the value from column name that would represent the earliest name .每个product_id基于列year ,我想从表示最早name的列name中获取值。

year name姓名 product_id product_id initial_name最初的名称
2016 2016 年 Pepsi.百事可乐。 123456 123456 Pepsi.百事可乐。
2017 2017 Pepsi co.百事可乐公司 123456 123456 Pepsi.百事可乐。
2017 2017 Cola可乐 567890 567890 Cola可乐
2018 2018 Coca-Cola可口可乐 567890 567890 Cola可乐
2019 2019 Coca-Colas可口可乐 567890 567890 Cola可乐

I started implementing the logic in this way but there must be an easier way:我开始以这种方式实现逻辑,但必须有一种更简单的方法:

SELECT *,
CASE WHEN year = date_min THEN name END name_min
FROM (
SELECT *,
    MIN(year) OVER (PARTITION BY product_id) year_min
FROM table

Use FIRST_VALUE() window function:使用FIRST_VALUE() window function:

SELECT *,
       FIRST_VALUE(name) OVER (PARTITION BY product_id ORDER BY year) name_min
FROM tablename;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM