TABLE 1
STUDENT TIME SCORE
1 1 4
1 2 3
1 3 4
2 1 2
2 2 2
2 3 8
3 3 10
3 4 10
4 1 1
4 2 3
4 3 2
4 4 4
4 5 4
4 6 5
我有表 1。我希望對每個學生和時間 1-2、3-4、5-6 進行分組和 SUM(SCORE) 以創建此表 2
STUDENT TIME TOTALSCORE
1 1-2 7
1 3-4 4
1 5-6 NA
2 1-2 4
2 3-4 8
2 5-6 NA
3 1-2 NA
3 3-4 20
3 5-6 NA
4 1-2 3
4 3-4 6
4 5-6 4
但是我有大資料所以希望從這樣做開始
select DISTINCT(TIME) from TABLE1
1
2
3
4
5
6
然后基本上將所有 TIME 值 >= 1 & < 2 作為 T1; >=2 & < 3 作為 T2;這很重要,因為我們使用 #.#,其中第一個 # 是年份,第二個 # 是三個月。所以有諸如 1.1、1.2、1.3 之類的值,但我不想一直列出這些值
uj5u.com熱心網友回復:
使用整數數學,我們可以(time-1)/2為我們提供 1-2、3-4、5-6、7-8 等之間的所有時間組。
select student
,sum(score) as total_score
,concat((time 1)/2*2-1, '-', (time 1)/2*2) as semester
from t
group by student, (time 1)/2
order by student
| 學生 | 總得分 | 學期 |
|---|---|---|
| 1 | 7 | 1-2 |
| 1 | 4 | 3-4 |
| 2 | 4 | 1-2 |
| 2 | 8 | 3-4 |
| 3 | 20 | 3-4 |
| 4 | 4 | 1-2 |
| 4 | 6 | 3-4 |
| 4 | 9 | 5-6 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510366.html
