上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
480615
註冊時間: 2008-04-11 文章: 93
第 1 樓
|
發表於: 星期五 四月 22, 2011 9:16 pm 文章主題: 请教:排序名次的代码不理解 |
|
|
SELECT 语文, (SELECT COUNT(*)+1 FROM xscj.dbf WHERE a.语文< 语文) AS 语文名次 FROM xscj.dbf AS a
这是一个表本身的嵌套查询。它是怎样进行执行的?也就是解题思路如何?
1、这里a.语文< 语文中的语句的a.语文别名a是指何表的别名? 语文是指何表中的橍名?
2、为什么相同的分数只计算一次?
3、名次号为什么会不連续的?从何语句会产生这种不連续的效果?
见图
图1会原表,图2为排序后的表。请行家指教。多谢了。 |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 2 樓
|
發表於: 星期六 四月 23, 2011 6:26 am 文章主題: |
|
|
我覺得,這個式子有問題
名次會缺漏, 如上例結果,缺了第3,5,6,..名
既然答案不正確,就不必討論解題思路了
若要排名次, 這樣比較簡單
SELECT 語文,RECNO() as 語文名次 FROM (SELECT 語文 FROM xscj.dbf GROUP BY 語文) a |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 3 樓
|
發表於: 星期六 四月 23, 2011 5:17 pm 文章主題: |
|
|
ckp6250:
1、要求是:相同的成绩为一个并列名次号,是要产生不連续的名次号.答案是正确的。
2、运行你的代码:SELECT 語文,RECNO() as 語文名次 FROM (SELECT 語文 FROM xscj.dbf GROUP BY 語文) a
提示找不到列语文 |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 4 樓
|
發表於: 星期六 四月 23, 2011 8:15 pm 文章主題: |
|
|
1.有第1名,第2名,第4名,沒有第三名?我不能理解耶。如果您說答案是正確的,那麼,您的問題3:『名次號為什麼會不連續的?從何語句會產生這種不連續的效果?』要問什麼呢?
2.又再測試一下,我能確認語句沒有問題,但因為沒有您的xscj.dbf,無法實測,不知是否為繁簡問題,您自行修正一下。
原貼為正排,分數由小而大,不合名次邏輯,小修如下
3.SELECT 語文,RECNO() as 語文名次 FROM (SELECT 語文 FROM xscj.dbf GROUP BY 語文 order by 語文 desc) a |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 5 樓
|
發表於: 星期六 四月 23, 2011 9:29 pm 文章主題: |
|
|
ckp6250:
又运行你的代码SELECT 語文,RECNO() as 語文名次 FROM (SELECT 語文 FROM xscj.dbf GROUP BY 語文 order by 語文 desc) a
提示找不到列语文!! |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 6 樓
|
發表於: 星期日 四月 24, 2011 6:07 am 文章主題: |
|
|
繁簡字問題吧
SELECT 语文,RECNO() as 语文名次 FROM (SELECT 语文 FROM xscj.dbf GROUP BY 语文 order by 语文 desc) a |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 7 樓
|
發表於: 星期日 四月 24, 2011 9:45 am 文章主題: |
|
|
ckp6250:
通过了,谢谢!原来是繁簡字。再一次请求。能否讲一下“FROM (SELECT 语文 FROM xscj.dbf GROUP BY 语文 order by 语文 desc) a ”中的含义。 |
|
回頂端 |
|
 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 8 樓
|
發表於: 星期日 四月 24, 2011 10:01 am 文章主題: |
|
|
FROM (SELECT 语文 FROM xscj.dbf GROUP BY 语文 order by 语文 desc) a
FROM (SELECT 语文 FROM xscj.dbf GROUP BY 语文 order by 语文 desc) as a
這兩行是一樣的 |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 9 樓
|
發表於: 星期日 四月 24, 2011 10:18 am 文章主題: |
|
|
(SELECT 语文 FROM xscj.dbf GROUP BY 语文 order by 语文 desc)
是否可这样理解:先把xscj.dbf中语文进行分组并从降序形成一个表,再查询来自别名为A的表
SELECT 语文,RECNO() as 语文名次 FROM (先把xscj.dbf中语文进行分组并从降序形成一个表)a
不知理解是否对? |
|
回頂端 |
|
 |
LiuRambo
註冊時間: 2007-11-27 文章: 481
第 10 樓
|
發表於: 星期日 四月 24, 2011 11:39 am 文章主題: |
|
|
You got it |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 11 樓
|
發表於: 星期日 四月 24, 2011 3:42 pm 文章主題: |
|
|
480615 寫到: |
1、要求是:相同的成績為一個並列名次號,是要產生不連續的名次號.答案是正確的。
[/color] |
參不透玄機何在?
既然講排名,不就應該是第1名,第2名,第3名,第4名.....一直排下去嗎?
為什麼缺第3名的答案會是正確的呢? |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 12 樓
|
發表於: 星期一 四月 25, 2011 7:07 pm 文章主題: |
|
|
为什么連续排名是不合理的,如果并列成绩越多,成绩差的名次与好的之间位子相差不大。有9753人,620-650这段分数中有500多人成绩是并列的,最差18分它的名次是572名。所以連续排位号是不合理的。不連续的排名是合理的。见2.JPG, 如果連续排。-60分为第6名。不連续排为13。如果划线的看不出哪些是并列的。哪些不并列。 |
|
回頂端 |
|
 |
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 13 樓
|
發表於: 星期一 四月 25, 2011 9:24 pm 文章主題: |
|
|
了解! |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 14 樓
|
發表於: 星期一 四月 25, 2011 10:03 pm 文章主題: |
|
|
现在反过来再来讨论:SELECT 语文, (SELECT COUNT(*)+1 FROM xscj.dbf WHERE a.语文< 语文) AS 语文名次 FROM xscj.dbf AS a
这是一个表本身的嵌套查询。它是怎样进行执行的?也就是解题思路如何?
1、这里a.语文< 语文中的语句的a.语文别名a是指何表的别名? 语文是指何表中的橍名?
2、为什么相同的分数只计算一次?
3、名次号为什么会不連续的?从何语句会产生这种不連续的效果?
哪位行家能指教一下吗? |
|
回頂端 |
|
 |
480615
註冊時間: 2008-04-11 文章: 93
第 15 樓
|
發表於: 星期二 四月 26, 2011 7:26 pm 文章主題: |
|
|
ckp6250
我提出的问题,请指教一下。 |
|
回頂端 |
|
 |
|