【发布时间】:2021-06-05 19:59:30
【问题描述】:
如何在下面的示例中选择多个网格,而不是在“WHERE”下仅选择一个:
SELECT
sdg_code,
sdg_name,
"grid.5170.3" as grid,
year,
COUNT(DISTINCT id) as pubs,
ROUND(AVG(fcr), 1) as fcr,
ROUND(EXP(AVG(LOG(GREATEST(fcr, 1)))), 1) as fcr_geomean,
ROUND(sum(AltWithScore), 1) as altmetric
FROM
(
SELECT
p.id,
year,
if(p.altmetrics.score > 0, 1, 0) as AltWithScore,
cat_sdg.code as sdg_code,
cat_sdg.name as sdg_name,
p.metrics.field_citation_ratio as fcr,
p.altmetrics.score as altmetric_score,
row_number() over(partition by p.id, cat_sdg.code) as rn
FROM
dimensions - ai.data_analytics.publications p,
UNNEST(category_sdg.full) cat_sdg
WHERE
year >= 2011
AND year <= 2020
AND "grid.5170.3" in UNNEST(research_orgs)
)
WHERE rn = 1
GROUP BY
sdg_code,
sdg_name,
year
ORDER BY year asc
需要改变的地方:
它目前只为 1 个组织 (GRID) 运行,我希望它为 11 个组织运行。 该组织由一个称为“GRID”的 ID 标识,如下所示: “grid.5170.3”
我希望我的新代码多占用 10 个组织 ID。需要用到这10个: grid.5254.6、grid.7048.b、grid.5117.2、grid.10825.3e、grid.4655.2、grid.11702.35、grid.154185.c、grid.475435.4、grid.7143.1、grid.27530.33
并添加一个带有组织名称的列;目前只有一个与组织有关的列。
谢谢,对这一切都是新手。
【问题讨论】:
-
不清楚你在寻找什么逻辑。提供一些示例以及预期的输出 - 或者至少更具体地说明所需的逻辑
-
嗨,刚刚用我尝试过但失败的例子更新了我的问题,也许他们会更好地解释我想要做什么。
-
显然,这些都不是工作示例。但请提供有关您正在寻找的逻辑的更多详细信息。两个网格都需要在记录中才能获得资格吗?还是两者中的任何一个?
-
两者。有 11 个不同的网格,我希望它们都出现在输出结果中。
-
仍然不清楚 - 请阅读我的第一条评论
标签: sql google-bigquery grid dimensions