作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是想先说明一下,虽然我确实有基本的了解,但我对一般使用 Bigquery 表和 sql 语句还是相当陌生。
我正在尝试从一个查询中创建一个新 View ,该查询获取每个员工每个版本的所有最佳测试分数:
select emp_id,version,max(score) as score from `project.dataset.table` where type = 'assessment_test' group by version,emp_id order by emp_id
我想获取该查询的结果,并创建一个由员工 ID 组成的新表,其中每个版本的列都有一列,该行 emp_id。我知道我可以通过包含“where version = a”、“where version = b”等来手动为每个版本创建一个表......然后在最后加入所有表,但这似乎不是就像最优雅的解决方案一样,总共有大约 20 个不同的版本。
有没有办法以编程方式为每个唯一版本创建一个列,或者至少将我的初始查询用作子查询并仅引用它,如下所示:
with a as (
select id,version,max(score) as score
from `project.dataset.table`
where type = 'assessment_test' and version is not null and score is not null and id is not null
group by version,id
order by id),
version_a as (select score from a where version = 'version_a')
version_b as (select score from a where version = 'version_b')
version_c as (select score from a where version = 'version_c')
select
a.id as id,
version_a.score as version_a,
version_b.score as version_b,
version_c.score as version_c
from
a,
version_a,
version_b,
version_c
Example Picture: left table is example data, right table is expected output
示例数据:
预期输出:
提前致谢,如有任何需要澄清的问题,请随时提出
最佳答案
使用下面的方法
select * from your_table
pivot (max(score) score for version in ('a', 'b', 'c'))
如果应用于您问题中的示例数据 - 输出为
如果事先不知道版本 - 使用下面
execute immediate (select '''
select * from your_table
pivot (max(score) score for version in (''' || string_agg(distinct "'" || version || "'") || "))"
from your_table
)
关于sql - 如何对每个唯一版本: For each unique id,,抓取最好的分数整理成表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72877218/
我是一名优秀的程序员,十分优秀!