| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		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
 
我提出的问题,请指教一下。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |