问题描述
您将如何在下面的示例中选择多个网格,而不是在“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,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,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。
谢谢,这一切都是新手。
解决方法
使用下面的 WHERE year >= 2011 AND year <= 2020 AND "grid.5170.3" in UNNEST(research_orgs)
代替
WHERE year >= 2011 AND year <= 2020
AND EXISTS (
SELECT 1
FROM UNNEST(research_orgs) grid
WHERE grid IN ('grid.5170.3','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')
)