Sql 我需要如何对此查询进行分组才能聚合最大值

Sql 我需要如何对此查询进行分组才能聚合最大值,sql,google-bigquery,Sql,Google Bigquery,我需要如何对这个查询进行分组,或者如何进行分区,以便在第4行获得maxsample\u date\u time。这需要是所选所有记录的最大值。我得到了一个错误: 选择列表引用。。。。既不分组也不聚合的标签列表 标签列表的数据类型为记录结构。UNNEST操作符获取一个数组并返回一个表,其中数组中的每个元素对应一行 我看了这个,但它对我没有帮助。我的例子中的不同之处在于,我也从数组中进行了选择 我想在select中的列表中也需要同样的内容 Select TO_JSON_STRING(label

我需要如何对这个查询进行分组,或者如何进行分区,以便在第4行获得maxsample\u date\u time。这需要是所选所有记录的最大值。我得到了一个错误:

选择列表引用。。。。既不分组也不聚合的标签列表

标签列表的数据类型为记录结构。UNNEST操作符获取一个数组并返回一个表,其中数组中的每个元素对应一行

我看了这个,但它对我没有帮助。我的例子中的不同之处在于,我也从数组中进行了选择


我想在select中的列表中也需要同样的内容

   Select TO_JSON_STRING(label_list)...
    ...group by 
     TO_JSON_STRING(label_list)

由于“选择分组”中的标签列表未识别,我觉得下面是您真正需要的

SELECT
  label_list,
  created_date_time,
  MAX(sample_date_time) OVER() AS sample_date_time_max, -- <-- HERE
  MAX(created_date_time) OVER (PARTITION By sample_date_time, finger_print_hash ORDER BY sample_date_time) AS created_date_time_max,
  sample_date_time,
  station,
  (
  SELECT name
  FROM UNNEST(label_list)
  WHERE type = "CHL"
  ) as channel,
  value
FROM my.mart
WHERE sample_date_time BETWEEN "2019-07-25 23:00:00.000000+00:00" AND "2019-07-26 04:00:00.000000+00:00"
AND station = '[myGuid]'
AND uom = "[myUom]"
AND is_good_status = true   

你不需要任何人在这里

样本数据在这里会很有帮助。什么是最不重要的,它的返回类型,因为在你的查询中,似乎在任何情况下都只给出一个值……需要详细信息吗?你能为我澄清几件事吗?1 STE Health School是哪一个字段?2为什么你认为你需要分组到JSON\U STRINGlabel\U列表?你到底想在这里实现什么?别担心,看看我的答案,你能不能在样本数据中添加预期的输出。你的要求不清楚。我很困惑,因为select查询既有max sample\U date\U time,也有sample\U date\U time。如果没有maxsingle label\u list的需要,那么对于single label\u list将有不同的示例\u日期\u时间,您要选择哪一个。我可以这样做,它解决了这个错误,然后我可以按查询中的所有其他列分组,但是我随后从UNNESTlabel\u list(其中type=CHL)中得到一个关于选择名称的错误。我不能用TO_JSON_字符串来包装它,因为它需要保留,因为SELECTyes内部选择是独立的,因此不同步,请尝试在group by中添加通道查询,我不理解为什么您需要选择中的子查询,因为它是独立的,您可以简单地加入它。只需按json选择除子查询group之外的所有_列。。。。join Subquery如何在group by中添加频道查询?我可以添加“通道”,但我不确定是否要在group by中添加查询。请尝试加入该子查询,而不是加入select本身
   Select TO_JSON_STRING(label_list)...
    ...group by 
     TO_JSON_STRING(label_list)
SELECT
  label_list,
  created_date_time,
  MAX(sample_date_time) OVER() AS sample_date_time_max, -- <-- HERE
  MAX(created_date_time) OVER (PARTITION By sample_date_time, finger_print_hash ORDER BY sample_date_time) AS created_date_time_max,
  sample_date_time,
  station,
  (
  SELECT name
  FROM UNNEST(label_list)
  WHERE type = "CHL"
  ) as channel,
  value
FROM my.mart
WHERE sample_date_time BETWEEN "2019-07-25 23:00:00.000000+00:00" AND "2019-07-26 04:00:00.000000+00:00"
AND station = '[myGuid]'
AND uom = "[myUom]"
AND is_good_status = true