原表tmp:
問題,將課程放到列上去
用case when 或 if ,外面再巢狀乙個sum即可。
#對於c_name,轉成列
##兩種方法結果一樣
#case when 表示式1 then 值1 when 表示式2 then 值2 else 值 end
select stu_id,
sum(
case
when c_name =
'語文'
then grade else
0end
)'語文'
,sum
(case
when c_name =
'數學'
then grade else
0end
)'數學'
,sum
(case
when c_name =
'英語'
then grade else
0end
)'英語'
from tmp group
by stu_id;
# if(表示式, 值1, 值2)
select stu_id,
sum(
if(c_name =
'語文'
,grade,0)
)'語文'
,sum(if
(c_name =
'數學'
,grade,0)
)'數學'
,sum(if
(c_name =
'英語'
,grade,0)
)'英語'
from tmp group
by stu_id;
結果:
問題,把stu_id放到一格中
#列轉行
#hive的函式
selcet
collect_set(stu_id) stu_id_set,
collect_list(stu_id) stu_id_list
from tmp;
結果:
stu_id_set
stu_id_list
[『1』,『2』,『3』]
[『1』,『1』,『1』,『2』,『2』,『2』,『3』,『3』,『3』]
SQL 行轉列,列轉行
行列轉換在做報表分析是還是經常會遇到的 行列轉換就是如下圖所示兩種展示形式互相轉換 只是做測試,建表比較隨意 create table student name varchar 20 subject int 10 score int 10 insert into student name,subje...
python 列轉行 SQL 行轉列,列轉行
sql 行轉列,列轉行 行列轉換在做報表分析時還是經常會遇到的,今天就說一下如何實現行列轉換吧。行列轉換就是如下圖所示兩種展示形式的互相轉換 行轉列假如我們有下表 select from student pivot sum score for subject in 語文,數學,英語 通過上面 sql...
sql 行轉列,列轉行整合
原始資料及結構如下 when 語文 then t.score else 0 end 語文,sum case t.subject when 數學 then t.score else 0 end 數學 sum case t.subject when 英語 then t.score else 0 end ...