【问题标题】:SQL Sub Queries - Listing dataSQL 子查询 - 列出数据
【发布时间】:2015-04-30 08:10:49
【问题描述】:

希望我的标题写得恰到好处。

到目前为止,我只有:

SELECT event_id
FROM prize
WHERE place <= 3

问题如下: 对于每项赛事,在一行中列出可用于一、二、三等奖的奖金。

所以我需要列出 PRIZE 表中的 EVENT_ID。然后将有三个单独的列显示一、二、三等奖。预期数据如下:

| event_id | First | Second | Third |
|    101   |  120  |   60   |   30  | 
|    102   |  10   |   5    |   2   | 
|    103   |  100  |   60   |   40  | 
|    401   |  1000 |   500  |  250  | 

表 PRIZE 包含以下信息:

+ ------------- + ---------- + ---------- +
| Event_id      | Place      | Money      |
+ ------------- + ---------- + ---------- +
| 101           | 1          | 120        |
| 101           | 2          | 60         |
| 101           | 3          | 30         |
| 102           | 1          | 10         |
| 102           | 2          | 5          |
| 102           | 3          | 2          |
| 103           | 1          | 100        |
| 103           | 2          | 60         |
| 103           | 3          | 40         |
| 401           | 1          | 1000       |
| 401           | 2          | 500        |
| 401           | 3          | 250        |
| 401           | 4          | 100        |
| 401           | 5          | 50         |
| NULL          | NULL       | NULL       |
+ ------------- + ---------- + ---------- +
15 rows

任何帮助表示赞赏

【问题讨论】:

    标签: mysql sql workbench


    【解决方案1】:

    我们可以使用条件聚合函数将您的行转换为列。

    select event_id, 
           max(case when place = 1 then money end) first,
           max(case when place = 2 then money end) second,
           max(case when place = 3 then money end) third
      from prize
        where event_id is not null
      group by event_id
    

    demo here

    【讨论】:

    • 忽略我的评论,这已经奏效了。忘记输入“按 event_id 分组”。
    猜你喜欢
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2023-03-29
    • 2022-12-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多