sql - 如果存在其他明智的随机选择另一个,如何选择符合条件的行?
问题描述
我有下表:
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_id
as 键创建一个表。逻辑是如果有主要本地然后使用它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。
解决方案
如果您不介意随机选择一个来返回最小值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
推荐阅读
- c# - 检查任务是否正在等待或忙碌
- python - 无法加载图表。将图加载到 igraph(来自任意源)“返回 NULL”
- javascript - 为一行中的相同值分配两个不同选择器的两个不同属性?
- python - 使用 XLRD 模块在导入的 excel 文件中搜索字符串
- python - 张量流中的权重和偏差初始化
- ruby-on-rails - Rails 生产删除链接制作获取(显示)请求
- ansible - Ansible 无法重新加载 sysctl
- css - 如何更改来自 ng2-smart-table 中 json 文件的数据的字体大小?
- python - 更改 QMessageBox 和 SaveFileDialog 的光标
- php - 使用波兰语字符将 CSV 导入 SQL 数据库