iT邦幫忙

0

定時統計個欄位拍序列表結果,另存table執行卡住

codegeass 3 年前1890 瀏覽
小弟想將班上個科系分數做成績排名直接查詢並建置一個新表放入
但小弟我光使用的查詢方式,就已經讓執行續卡住了~!!!
但減少到只處理5個學科以下還可以運作,一往上追加就.......
不知是否用錯方法讓執行卡住?

SELECT
main.id, s1.國語, s2.英語,......sx.xx
FROM
(SELECT id FROM CLASS_A ORDER BY id) as main
JOIN 
(SELECT @rownum := @rownum +1 AS 'rownum', id, 國語 FROM CLASS_A, (SELECT @rownum :=0) a ORDER BY 國語 DESC) AS s1
ON main.uid = s1.uid
JOIN 
(SELECT @rownum := @rownum +1 AS 'rownum', id, 英語 FROM CLASS_A, (SELECT @rownum :=0) b ORDER BY 英語 DESC) AS s2
ON main.uid = s2.uid
        .
        .
        .
        .
(SELECT @rownum := @rownum +1 AS 'rownum', id, xx FROM CLASS_A, (SELECT @rownum :=0) x  ORDER BY xx DESC) AS sx
ON main.uid = sx.uid
+------------+----------+----------+-----------------+----------+----------+-----------------+
TABLE CLASS_A
+------------+----------+----------+-----------------+----------+----------+-----------------+
|         學號|       國語|       英語|             數學|       體育|       社會|             自然|  
+------------+----------+----------+-----------------+----------+----------+-----------------+
| 49421101   |       30 |       90 |             100 |       30 |       40 |                0| 
| 49421102   |       50 |       60 |              50 |       30 |       70 |               50|  
| 49421103   |       70 |       80 |               0 |       30 |       90 |               85| 
+------------+----------+----------+-----------------+----------+----------+-----------------+
 
+------------+----------+----------+-----------------+----------+----------+-----------------+
TABLE TMP_CLASS_A
+------------+----------+----------+-----------------+----------+----------+-----------------+
+------------+----------+----------+-----------------+----------+----------+-----------------+
|         學號|       國語|       英語|             數學|       體育|       社會|             自然|  
+------------+----------+----------+-----------------+----------+----------+-----------------+
| 49421101   |       3 |       1 |                 1 |        1 |        3 |                0| 
| 49421102   |       2 |       3 |                 2 |        2 |        2 |                1|  
| 49421103   |       1 |       2 |                 3 |        3 |        1 |                2| 
+------------+----------+----------+-----------------+----------+----------+-----------------+
看更多先前的討論...收起先前的討論...
一級屠豬士 iT邦高手 1 級 ‧ 3 年前 檢舉
定時統計個欄位拍序列表結果,另存table執行卡住
<== 這好怪異的說法.
你把原始表,跟想要計算的方式,與想要達到的結果.列出來吧.
codegeass iT邦新手 5 級 ‧ 3 年前 檢舉
我的表達有問題~抱歉~!
(原始表)班上各科分數表單為CLASS_A

查出班上各科排名結果並寫入TMP_CLASS_A
TMP_CLASS_A 的欄位是各科目班上的排名。
codegeass iT邦新手 5 級 ‧ 3 年前 檢舉
定時這兩個關鍵字是我誤打上去的~!!
抱歉各位~!!
codegeass iT邦新手 5 級 ‧ 3 年前 檢舉
定時這兩個關鍵字是我誤打上去的~!!
抱歉各位~!!

1 個回答

0
bluesky1213
iT邦新手 3 級 ‧ 3 年前
最佳解答

請參考這篇
http://ithelp.ithome.com.tw/question/10069933
若要使用MS-SQL 的話請查詢關鍵字 Rank、Rownumber在google上查詢皆有許多範例

看更多先前的回應...收起先前的回應...
codegeass iT邦新手 5 級 ‧ 3 年前 檢舉

因為如果我想讓結果如TMP_CLASS_A這表單~!
我只想的到JOIN T-T

codegeass iT邦新手 5 級 ‧ 3 年前 檢舉

不會是 create table tmp01 (一個科目查一個結果)
然後10個科目 就跑10個tmp?

bluesky1213 iT邦新手 3 級 ‧ 3 年前 檢舉

join 是資料交集的觀念,因此需要比對
http://www.dotblogs.com.tw/hatelove/archive/2010/01/23/sql-join-concept.aspx?fid=69923
你join後面的ON main.uid = s1.uid就是比對條件阿

bluesky1213 iT邦新手 3 級 ‧ 3 年前 檢舉

我要發表回答

立即登入回答