1. 程式人生 > >SQL:查詢某個班級的人數並按班級人數多少進行排列,查詢各班年齡最小的女生的班級號,學號,姓名,出生日期並按班級號升序排列

SQL:查詢某個班級的人數並按班級人數多少進行排列,查詢各班年齡最小的女生的班級號,學號,姓名,出生日期並按班級號升序排列

表:student

欄位:

studentnum(學號),studentname(學生姓名),classname(班級名稱),sex(男:1,女:2),birthday(出生日期)

我現在資料庫儲存了以下資料:


問題1:查出student表中各個班級的人數,並按人數從多到少排列

答案:

SELECT classname,COUNT(classname) FROM student GROUP BY classname ORDER BY COUNT(classname) DESC

查詢結果是:

注意點GROUP BY分組,ORDER BY...DESC(對某某欄位進行降序排列,也就是從多到少顯示,ASC是升序)

問題2:查出student表中各班年齡最小的女生班級號,學號,姓名和出生日期,並按班級號升序排列

答案:

SELECT classname,studentnum,studentname,birthday FROM student WHERE age in(SELECT MIN(age) FROM student WHERE sex='2' GROUP BY classname ) ORDER BY classname ASC

查詢結果為:


注意點:以上標紅已說明,大概思路就是:既然要查詢年齡最小的,則需要用到min函式。

各班,則需要用到分組gruop by 班級。where age in 的意思是我要查詢的年齡條件是什麼,在年齡條件符合的條件下,性別必須是女生,所以要加in裡面加個where 條件,最後則是按照題目的意思,按班級號升序,就用到了order by 班級號 ASC。

問題3:想統計出各班的男生和女生分別 多少人

答案:SELECT classname AS '班級',SUM(CASE WHEN sex='1' THEN sex ELSE 0 END ) AS '男生',
SUM(CASE WHEN sex='2' THEN sex ELSE 0 END ) AS '女生'
FROM student

GROUP BY classname;

注:如果case函式中,把then後面的sex改成數字1同樣也能得到正確答案,但是如果改為2之後,得到的結果則會計算有誤。

結果展示:


注意點,使用的是

以上是個人理解,如有理解錯誤的地方,歡迎指正哦~

我是通過翻書和做測試,得出來的答案。

其實資料庫的知識如果太久沒有接觸,腦子就很容易短路的,希望今後能夠慢慢複習,畢竟知識都是靠積累的哦。

這是我寫的第一篇部落格,之後會一直堅持寫技術部落格,當然,也會寫一些人生感悟,希望能與每個走在未來的人一起交流心聲。

相關推薦

SQL查詢某個班級人數班級人數多少進行排列查詢年齡女生班級學號姓名出生日期班級升序排列

表:student欄位:studentnum(學號),studentname(學生姓名),classname(班級名稱),sex(男:1,女:2),birthday(出生日期)我現在資料庫儲存了以下資料:問題1:查出student表中各個班級的人數,並按人數從多到少排列答案:

Numpy排序及返回索引、多重複制、兩個矩陣對應元素取值、隨機選擇元素

1.排序: sort() # 方法一: import numpy as np a = np.array([[4,3,5,],[1,2,1]]) print (a) b = np.sort(a, ax

初學C語言輸入10個整數將其中的數與第一個數對換大的數與最後一個數對換。

#include<stdio.h> void input(int a[10]) { int i; for (i=0;i<10;i++) { scanf("%d",&

三人年齡 三個神祕蒙面人來訪F博士。博士詢問他們年齡他們說我們中年齡的不超過19歲。我們3人年齡總和為70歲。且我們三人年齡的乘積是所有可能情況中大的。

package com.dati; public class test1 { /** * 2. 三人年齡 三個神祕蒙面人來訪F博士。 博士詢問他們年齡時,他們說:我們中年齡最小的不超過19歲

Mysql查詢某個欄位出現的次數倒序排列

問題:mysql資料庫表名address,查詢城市city欄位出現的次數並按倒序排列   查詢語句 select city,count(*) from address group by city order by count(*)  desc 執行結果如圖,按查詢欄位(城

5. 資料庫題(以個人熟悉資料庫為準、要求寫出sql) (1) 計算每個人的總成績排名(要求顯示欄位:學號,姓名,總成績) (2) 計算每個人單科的最高成績(要求顯示欄位: 學號,姓名,課程,最

5. 資料庫題(以個人熟悉資料庫為準、按要求寫出sql) (1) 計算每個人的總成績並排名(要求顯示欄位:學號,姓名,總成績) (2) 計算每個人單科的最高成績(要求顯示欄位: 學號,姓名,課程,最高成

對於一個m*n的整數矩陣其中每一行和每一列的元素都升序排列設計一個高效的演算法判斷一個數值是否存在給出位置

package com.huanchuang.arvin.vo; public class Finder {     private String findElement(int[][] matrix, int target) {         int row = 0,

SQL 某個時間段範圍內產品有價格且求平均數

having end case 產品 天數 logs style where and select ID,AVG(fPrice) as avgPrice from Price where Hp_Date >=‘2017-07-04‘ and Hp_Dat

c程序設計 8.15寫幾個函數①輸個職工的姓名和職工;②職工由小到大順序排序,姓名順序也隨之調整;③要求輸入一個職工號用折半法找出該職工的姓名,從主函數輸入要查找的職工號輸出該職工

xmx ebr ckey ros lbp loj ase vfk cu2 8.15寫幾個函數:①輸個職工的姓名和職工號;②按職工號由小到大順序排序,姓名順序也隨之調整;③要求輸入一個職工號,用折半法找出該職工的姓名, 從主函數輸入要查找的職工號,輸出該職工。 寫的時候為

sql server 查詢某個時間段共有多少周及每周的日期

images first mage 語句 .html cas src exce 時間 sql 語句 select number+1 as wknum,dateadd(wk,number,‘2017-01-01‘) as firstday, (case when year(

[推薦推薦][提供下載]ORACLE SQL經典查詢練手系列文章收尾(目錄篇)

[推薦推薦][提供下載]ORACLE SQL: 經典查詢練手系列文章收尾(目錄篇) ——通過知識共享樹立個人品牌。   通過近一個月的努力,《經典查詢練手系列》也快告一段落,但並不代表結束,以後還會增加!我很榮幸本系列每一篇文章都上了評論或推薦頭條,這離不開大家的支援,這也

Python列表中某一列作為索引查詢其他列表中對應資訊找到後插入當前列表。

直接複製,修改地址後使用。修改三個位置,如備註。 #coding=utf-8 import os.path import numpy as np if __name__=="__main__":  list_1_txt= open('list1.txt')#這裡,讀取第一個列表 &

要求如果某個欄位=1就立刻顯示否則10分鐘以後顯示,-----sql語句

select a.* FROM ( SELECT *,DATE_ADD(create_date, INTERVAL 10 MINUTE)<SYSDATE() isDelay FROM `car_teams_ord` ) a where IF(iss_price=1||iss_price=

查詢某個被哪個程序佔用

 cmd控制檯裡執行以下命令:  1.列出所有埠的情況 > netstat -aon  2.查詢被佔用的埠號(port)  > netstat -aon|findstr "port"

ORACLE——在所有表、欄位中查詢某個字串輸出表名和欄位名

什麼都不想說,直接上乾貨 declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from

給定一個升序排列的陣列去掉重複的數輸出新的陣列的長度。

給定一個升序排列的陣列,去掉重複的數,並輸出新的陣列的長度。 例如:陣列 A={1,1,2},你的程式應該輸出 2 即新陣列的長度,新陣列為 {1,2}。 要求:不能新開陣列分配額外的空間,即常數空間限制。 輸入格式 輸入一個整數 n(1≤n≤1000)。 接下來一行

建立和呼叫儲存過程查詢Stu資料庫中某個同學的選修課程的資訊包括學號姓名課程名稱成績

CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint

【find_in_set】SQL查詢某個特定字串出現在指定欄位(N子鏈)中的位置

在mysql資料庫中,我們會經常用到in語法,用來查詢某個欄位包含N子鏈中的一個或多個字串,如: select * from table where id in('1,2,3,4'); 但如果某個欄位本身是儲存的N子鏈,然後需要查出其中擁有某個特定值呢?這種需求在