BigQuery:为每个user_id选择第二大

时间:2018-02-25 03:24:25

标签: google-bigquery standard-sql

表:

    | User_ID |  Red | Blue | Green |  Rating |
    |   a     |   23 |  33  |   42  |    99   |
    |   a     |   56 |  45  |   62  |    45   |
    |   a     |   23 |  49  |   28  |    67   |
    |   b     |   39 |  59  |   10  |    87   |
    |   b     |   18 |  28  |   59  |    38   |
    |   b     |   40 |  50  |   38  |    94   |

架构看起来像这样。红色,蓝色和绿色是RGB数字。评级是每个用户喜欢这种颜色的程度。

我在3个查询中需要帮助:

  1. 识别每个用户'最喜欢的颜色(a:第1行,第2行:第6行)
  2. 识别每个用户'第二个喜欢的颜色(a:第3行,第2行:第4行)
  3. 每位用户最喜欢的2种颜色的评分总和。
  4. 谢谢!

    //编辑:

    尝试了以下查询:

        SELECT distinct(User_ID), Red, Blue, Green, Rating 
        FROM `test_colour` 
        WHERE Rating = (SELECT MAX(RATING) FROM `test_colour` )
        Group by 1,2,3,4,5 
    

    以上仅返回评分最高的行

        SELECT distinct(User_ID), Red, Blue, Green, MAX(Rating)
        FROM `test_colour` 
        Group by 1,2,3,4
    

    以上返回所有行..

0 个答案:

没有答案