2017-04-19 57 views
-3

對於我的計算機課程的問題之一,我被要求解釋下面的SQL腳本詳細:詳細解釋SELECT語句腳本的MySql

SELECT exam_board, COUNT(*) 
FROM subjects 
GROUP BY exam_board; 

下面是我自己編寫響應那個問題。我只是想知道如果我忘了包括什麼東西,或者如果我錯誤地說了些什麼。任何反饋都將不勝感激!

該腳本以SELECT語句開頭。 SELECT語句從一個或多個表或數據庫中檢索記錄(然後,返回的數據存儲在結果表中,稱爲結果集)。 'COUNT()'是一個函數,它返回(全部(如有星號))與指定標準相匹配的行數,並給出查詢中獲取的記錄總數。因此,'SELECT exam_board,COUNT()FROM主題'表示該腳本將返回'主題'表中'exam_board'列中的所有考試委員會及其數量(該考試委員會的主題數量)。最後,最後一行是'GROUP BY exam_board';'GROUP BY'子句經常用於SELECT語句中以從多個記錄中收集數據。其目的是將結果分成一列或多列。在這種情況下,它被'exam_board'分組,這意味着查詢的結果將被分組到檢查板的一列中。

+0

這甚至不是一個問題.. – Gntem

+0

這是基本的sql。我認爲更好你reffer https://www.w3schools.com/sql/它將有助於獲得更多關於sql –

+1

我正在投票結束這個問題作爲題外話,因爲這是作業,而不是一個特定的編碼問題。 –

回答

3

您忘記了GROUP BY的作用是將分組列中的每個不同值(此查詢中的exam_board)中的結果集減少爲一行。

因此,主題表中可能有10,000行,但exam_board只有四個不同的值。使用GROUP BY意味着結果集中只有四行,每個exam_board只有一行。

然後COUNT(*)將是每個相應組「摺疊」的行數。

我要求你不要複製&粘貼我的答案,但用你自己的話寫下你自己的答案。我的寫作風格與你的寫作風格截然不同,所以如果你複製粘貼&,老師會明白你已經解除了這個問題。

0

其實這不是最好的答案。

SELECT不僅可以返回表中的數據,還可以返回任何函數的結果,例如SELECT VERSION()返回服務器軟件的一個版本。

作爲COUNT(*)參數的星號完全沒有關係。你可以在這裏放任何列或函數,即使COUNT(VERSION()),結果也是一樣的。

「SELECT exam_board,COUNT()FROM受試者的將返回一個單列具有兩列:在表中的行「主體」的總數和「exam_board」列的表的第一行中的值。

內容表中的:

mysql> select exam_board from subjects; 
+------------+ 
| exam_board | 
+------------+ 
| 2   | 
| 2   | 
| 3   | 
| 3   | 
| 3   | 
+------------+ 
5 rows in set (0.00 sec) 

混合在一起列值和函數返回等SUM(),MIN(),MAX()等的單一值不進行分組的功能:

mysql> select exam_board, count(*) from subjects; 
+------------+----------+ 
| exam_board | count(*) | 
+------------+----------+ 
| 2   |  5 | 
+------------+----------+ 
1 row in set (0.00 sec) 

只有使用分組操作符,我們才能得到所需的結果:每個exam_board字段值的記錄數。

mysql> select exam_board, count(*) from subjects group by exam_board; 
+------------+----------+ 
| exam_board | count(*) | 
+------------+----------+ 
| 2   |  2 | 
| 3   |  3 | 
+------------+----------+ 
2 rows in set (0.00 sec)