由于我是bigquery的新手,我正在努力解决基本问题。该表包含145条记录。如何从表中创建数组。这是可下载的链接https://drive.google.com/uc?export=download&id=1SvkAN8sqS7WnsBO-X3UnyXI8sen5TOZ0。可下载文件采用csv格式。我想知道每个学生的最高分和他们的主题。
答案 0 :(得分:1)
感谢莫妮卡的回答,我终于得到了你的问题:o)
我注意到可下载链接中的数据只是一堆重复的行,所以如果使用简单的DISTINCT对它们进行重复数据删除,那么最终只有8行。所以那部分还不清楚
但如果忽略这方面,获得最高分和各自主题的方法如下。它回答了你提出的两个问题:
1 - 如何从表中创建数组
2 - 如何获得每个学生及其主题的最高分
#standardSQL
WITH data AS (
SELECT DISTINCT name, Physics, Chemistry, Maths, Biology
FROM `project.dataset.table`
)
SELECT name,
(
SELECT pair
FROM UNNEST([STRUCT<highest_mark INT64, subject STRING>
(Physics, 'Physics'),
(Chemistry, 'Chemistry'),
(Maths, 'Maths'),
(Biology, 'Biology')
]) pair
ORDER BY pair.highest_mark DESC
LIMIT 1
).*
FROM data
如果要将以上内容应用于包含您的数据的表格 - 以下是结果
Row name highest_mark subject
1 Samuel 96 Maths
2 David 90 Physics
3 Mark 90 Physics
4 John 94 Physics
5 Mathew 94 Physics
6 Andrew 97 Physics
7 James 97 Physics
8 Peter 98 Chemistry
我认为这个解决方案比使用分支CASE那时更具可读性和可管理性......
答案 1 :(得分:0)
我尝试了这个查询,但确实有效。
var arrStudents = [s1, s2, s3, s4, s5]
if let index = arrStudents.index(where: {$0.id == 1}) // Search id = 1 you can set any value
{
arrStudents.remove(at: index)
}