SQL統計問題嚴重

2023-01-23 15:00:12 字數 970 閱讀 5000

1樓:餘興斌

select 班級,語文=(select count(*) from 學生表 where 選修科目='語文' and t.班級),數學=(select count(*) from 學生表 where 選修科目='數學' and t.班級),化學=(select count(*) from 學生表 where 選修科目='化學' and t.

班級) from 班級表 t

2樓:

我給你一個oracle資料庫的語句吧,不知道你用的什麼資料庫,參考一下解決思路吧

select 班級,sum(decode(選修科目,'語文',1,0)) ,sum(decode(選修科目,'數學',1,0)) ,sum(decode(選修科目,'化學',1,0)) from 學生資訊表 group by 班級

只要把涉及的科目加上就能得到人數,sum(decode(選修科目,'語文',1,0))

decode函式把 選修科目 語文 翻譯為1,其他為零,然後把1加起來就是語文科目的人數了

其他資料庫有沒有這種功能的函式呢,我不知道,你可以查一查。

再給你進一步提供思路

decode(expression,val1,trans1,val2,trans2,default)

相當於if expression=val1 then

return trans1

else if expression=val2 then

return trans2

else

return default

end if

希望對你解決思路有所幫助。

3樓:匿名使用者

其實這就是一個將列轉成行的典型sql問題

到這兒看看吧

SQL中豎表變橫表及統計功能實現的問題

在源表加一列月份,輸入月份值。然後對源資料使用 資料透視表 沒注意,你是說sql select 部門 費用專案 sum case when substring 日期 5,2 01 then 金額 else 0 end as 1月總 sum case when substring 日期 5,2 02 ...

sql語句問題,SQL語句問題

sql語句 select a.姓名,a.計費id,b.單元編號,b.單金額,c,年月 from a,b,c where a.計費id b.計費id and b.單元編號 c.單元編號 說明 這個表結構其實b表是中間關係表,如果真實的資料結構就是這個樣子的話,那麼可能是資料量大並且經常需要查詢每個表,...

SQL的問題,SQL的一個問題

將截斷字串或二進位制資料。這個是你插入的資料大於你欄位定義的長度,注意一個漢字是佔兩位的 char 我記得預設是1個還是2個位元組,應該定義為char 10 你又沒有聚集函式幹嘛寫group by去掉group by,或者你要是想分組就這樣 select 課程號,min 學號 min 成績 from...