2016-11-19 11 views
0

各学生について、取得するコースの数を見つけて、 の行を降順に並べ替えます。 (例えば、学生証、その学生が撮影した コース数)mysqlワークベンチでどのようにこのクエリを見つけることができますか

STUDENT TABLE 

| ID  | name  | dept_name  | tot_cred | 
| S0901 | Alice  | Comp.Sci.  | 83  | 
| S0902 | Martha | Comp.Sci.  | 75  | 
| S0903 | Micheal | Comp.Sci.  | 45  | 
| S0904 | Rose  | Comp.Sci.  | 77  | 
| S0905 | Alfie  | Comp.Sci.  | 91  | 
| S1901 | Brad  | Biology  | 23  | 

TAKES TABLE 

| ID  | course_id  | sec_id  | semester  | year  | grade  
| S0901 | CS-101   | 1   | Fall   | 2009  | A   
| S0901 | CS-315   | 1   | Spring  | 2010  | B+   
| S0901 | HIS-351  | 1   | Spring  | 2010  | A-   
| S0901 | MTH-101  | 1   | Fall   | 2009  | A   
| S0901 | MTH-102  | 1   | Spring  | 2009  | B+ 
| S0902 | CS-101   | 1   | Fall   | 2009  | A   
| S0902 | CS-315   | 1   | Spring  | 2010  | B+   
| S0902 | CS-319   | 1   | Spring  | 2010  | B   
| S0902 | HIS-351  | 1   | Spring  | 2010  | A-   
| S0902 | MTH-101  | 1   | Fall   | 2009  | A   
| S0902 | MTH-102  | 1   | Spring  | 2009  | B+   
| S1901 | CS-101   | 1   | Fall   | 2009  | B+   
| S1901 | CS-190   | 1   | Spring  | 2009  | C   
| S1901 | CS-315   | 1   | Spring  | 2010  | A-   
| S1901 | HIS-351  | 1   | Spring  | 2010  | A-  
+0

あなたは何を試しましたか? – randominstanceOfLivingThing

答えて

1

技術的には、@ Marcinekの答えは、ゼロクラスを取る生徒を省略するため、技術的には十分ではないかもしれません。私が代わりにこれを使用します。

SELECT STUDENT.ID, COUNT(TAKES.ID) 
FROM STUDENT LEFT JOIN TAKES ON STUDENT.ID = TAKES.ID 
GROUP BY STUDENT.ID 
ORDER BY COUNT(TAKES.ID) DESC; 

LEFT JOINを使用することにより、あなたは、そのIDテーブルをTAKESに表示されていない学生を取り込むことができます。

0

だけで参加し、グループ最大の結果を。

SELECT COUNT(*), s.id FROM student s, takes t where t.id = s.id group by s.id order by count(*) desc 
関連する問題