首页 > 解决方案 > 如果存在其他明智的随机选择另一个,如何选择符合条件的行?

问题描述

我有下表:

article_id , locale, category_name, is_primary_local
  1             en              answers          True
  1             es              respuestas       False
  2             en              questions        False
  2             de              fragen           False
  2             it              domande          False

关键是(article_id, locale)

我想用article_idas 键创建一个表。逻辑是如果有主要本地然后使用它category_name如果不是随机选择一个。每个 只能有一个 primary_local article_id

所以输出看起来像:

article_id , category_name
   1            answers
   2             fragen    -- or domande, questions

这是我尝试过的:

SELECT 
      article_id,
      MIN(CASE WHEN is_primary_local  Then category_name else ?????  END) as category_name
From table
GROUP BY article_id

但我不知道如何完成这种情况?

我正在使用 presto sql。

标签: sqlwindow-functionspresto

解决方案


如果您不介意随机选择一个来返回最小值category_name,那么在您的代码中使用COALESCE()如下:

SELECT 
      article_id,
      COALESCE(
        MIN(CASE WHEN is_primary_local  THEN category_name END),
        MIN(category_name) 
      ) as category_name
From tablename
GROUP BY article_id

推荐阅读