【问题标题】:How to use two group by statement in one select statement in Bigquery?如何在 Bigquery 的一个 select 语句中使用两个 group by 语句?
【发布时间】:2020-03-11 15:17:04
【问题描述】:

我有一个三列的表。 (Column_A, Column_B, Column_C)

表中数据结构如下:

Column_A  |  Column_B  |  Column_C
----------------------------------
  Jeeva   |  football  |   1
  Jeeva   |  football  |   2
  Jeeva   |  football  |   3
  Jeeva   |  handball  |   5
  Jeeva   |  handball  |   1
  Jeeva   |  handball  |   7
  Jeeva   |  handball  |   2
  Jeeva   |  voleyball |   1
  Jeeva   |  voleyball |   2
 Bharathi |  voleyball |   10
 Bharathi |  voleyball |   7
 Bharathi |  voleyball |   2

我想要以下结果:

Column_A  |  Column_B  |  Column_C
----------------------------------
  Jeeva   |  football  |   3
  Jeeva   |  handball  |   7
  Jeeva   |  voleyball |   2
 Bharathi |  voleyball |   10      

期望的结果:对于 Column_A 中的用户在 Column_B 中参加过的每项运动,在 Column_C 中找到最大得分值

我在Bigquery中写了如下查询,

SELECT DISTINCT a.* FROM `project.dataset.individual_results` a 
RIGHT JOIN
(SELECT column_a, column_b, MAX(column_c) AS max_val FROM `project.dataset.individual_results` GROUP BY column_a GROUP BY column_b) b 
ON a.column_a = b.column_a AND a.column_b= b.max_val WHERE a.column_c IS NOT NULL

由于第二个 Group By 语句,我收到错误消息。

错误信息:

Syntax error: Expected ")" but got keyword GROUP

如何解决这个问题并获得想要的结果?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    GROUP BY column_a GROUP BY column_b - 应该只是GROUP BY column_a, column_b

    但我也认为您根本不需要 JOIN,第二个子查询为您提供了您描述的确切结果:

    SELECT column_a, column_b, MAX(column_c) AS max_val 
    FROM `project.dataset.individual_results` 
    GROUP BY column_a, column_b
    

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多