sat*_*aya 3 sql transpose snowflake-cloud-data-platform
我正在探索 MLB 棒球统计数据,这是在球场级别的。我想总结一下板材外观层面的音高。相关栏目:
game_pk | pitcher_id | batter_id | inning | pitch_number | pitch_type | plt_apprnc_pk (unique)
----------------------------------------------------------------------------------------------
492321 | 542881 | 518466 | 2 | 1 | FF | 4923215428815184662
492321 | 543475 | 571448 | 1 | 2 | SL | 4923215434755714481
492321 | 543475 | 571448 | 1 | 1 | FF | 4923215434755714481
492321 | 543475 | 571448 | 1 | 3 | FF | 4923215434755714481
Run Code Online (Sandbox Code Playgroud)
我正在研究一个仅显示每个板外观(plt_apprnc_pk)的一次迭代的查询,后面是pitch_number列(第一个音高,第二个音高,第三个音高等...)显示相应音高编号的每种音高类型。本质上,我想通过音高数字调换音高类型。
plt_apprnc_pk (unique)| first_pitch | second_pitch | third_pitch
----------------------------------------------------------------
4923215434755714481 | SL | FF | FF
Run Code Online (Sandbox Code Playgroud)
我尝试使用 Case 语句(即 CASE WHENitch_number = 1 THENpitch_type END)来执行此操作。我不断为每个 plt_apprnc_pk 获取多行。
plt_apprnc_pk (unique)| first_pitch | second_pitch | third_pitch
------------------------------------------------------------------
4923215434755714481 | SL | NULL | NULL
4923215434755714481 | NULL | FF | NULL
4923215434755714481 | NULL | NULL | FF
Run Code Online (Sandbox Code Playgroud)
基于pitch_number 转置这些字符串同时仅保留唯一键的一次迭代的最佳方法是什么?
我尝试使用 Case 语句(即 CASE WHENitch_number = 1 THENpitch_type END)来执行此操作。我不断为每个 plt_apprnc_pk 获取多行。
这里的模式称为条件聚合:
SELECT plt_apprnc_pk
,MAX(CASE WHEN pitch_number = 1 THEN pitch_type END) AS first_pitch
,MAX(CASE WHEN pitch_number = 2 THEN pitch_type END) AS second_pitch
,MAX(CASE WHEN pitch_number = 3 THEN pitch_type END) AS thrid_pitch
-- ...
--,MAX(CASE WHEN pitch_number = n THEN pitch_type END) AS nth_pitch
FROM tab
GROUP BY plt_apprnc_pk;
Run Code Online (Sandbox Code Playgroud)
注意:必须提前知道最大“pitch_number”。
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |