mysql高級查詢-行列互轉(zhuǎn)

行轉(zhuǎn)列

題目1

image.png
CREATE TABLE students_scores (
    id INT AUTO_INCREMENT,
    name VARCHAR(50),
    subject VARCHAR(50),
    score INT,
    PRIMARY KEY(id)
);
INSERT INTO students_scores (name, subject, score) VALUES
('張三', '語文', 78),
('張三', '數(shù)學(xué)', 88),
('張三', '英語', 98),
('李四', '語文', 89),
('李四', '數(shù)學(xué)', 76),
('李四', '英語', 90),
('王五', '語文', 99),
('王五', '數(shù)學(xué)', 66),
('王五', '英語', 91);
select name, sum(語文) as 語文, sum(數(shù)學(xué)) as 數(shù)學(xué), sum(英語) as 英語

from (select *,
             case students_scores.subject when "語文" then students_scores.score else 0 end as 語文,
             case students_scores.subject when "數(shù)學(xué)" then students_scores.score else 0 end as 數(shù)學(xué),
             case students_scores.subject when "英語" then students_scores.score else 0 end as 英語

      from students_scores) as ss
group by name;


select name,
       sum(case students_scores.subject when "語文" then students_scores.score else 0 end) as 語文,
       sum(case students_scores.subject when "數(shù)學(xué)" then students_scores.score else 0 end) as 數(shù)學(xué),
       sum(case students_scores.subject when "英語" then students_scores.score else 0 end) as 英語

from students_scores
group by name

解題步驟

  1. 確定分組列,轉(zhuǎn)換列,數(shù)據(jù)列
  2. 生成偽列
  3. 做分組查詢
  4. 選擇合適的聚合函數(shù)

題目2

image.png

select results.ddate,
    count( case results.result when '勝' then 1 else null end )  as 勝,
       count(  case results.result when '負(fù)' then 1 else null end ) as 負(fù)
from results

group by  ddate

select results.ddate,
    sum( case results.result when '勝' then 1 else 0 end )  as 勝,
       sum(  case results.result when '負(fù)' then 1 else 0 end ) as 負(fù)
from results

group by  ddate

行轉(zhuǎn)列

image.png
select  name, '語文' as subject, 語文 as  score from  students_scores2
union  all
select  name, '數(shù)學(xué)' as subject, 數(shù)學(xué) as  score from  students_scores2
union  all
select  name, '英文' as subject, 英語 as  score from  students_scores2
order by  name
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 幕課oracle學(xué)習(xí)筆記 --?。?!scott用戶 --一.分組查詢 --1.常用的分組函數(shù):AVG(平均數(shù)),S...
    xiaoxiao蘇閱讀 1,386評論 0 5
  • 想要將查詢到的成績行轉(zhuǎn)列,即轉(zhuǎn)化每個學(xué)生成績?yōu)橐恍?,每個學(xué)科為一列 使用case語句:當(dāng)課程名稱等于公共課,就將此...
    漫漫_mm閱讀 641評論 0 1
  • 一、行轉(zhuǎn)列 即將原本同一列下多行的不同內(nèi)容作為多個字段,輸出對應(yīng)內(nèi)容。 建表語句 插入數(shù)據(jù) 查詢數(shù)據(jù)表中的內(nèi)容(即...
    塵埃里的玄閱讀 881評論 0 2
  • 行列互轉(zhuǎn)問題 行轉(zhuǎn)列 從數(shù)據(jù)的行拆出數(shù)據(jù)的列,即把觀測的屬性(行)拆成一個變量(列)。附注1.其實(shí)我一開始覺得這是...
    茬茬閱讀 144評論 0 0
  • 本文導(dǎo)讀:T-SQL語句中,Pivot運(yùn)算符用于在列和行之間對數(shù)據(jù)進(jìn)行旋轉(zhuǎn)或透視轉(zhuǎn)換,PIVOT命令可以實(shí)現(xiàn)數(shù)據(jù)表...
    星期五與糖糖閱讀 1,356評論 0 3

友情鏈接更多精彩內(nèi)容