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語言)BinarySrearchTree二叉搜尋樹 --- 標準插入(遞迴,非遞迴)、遍歷(前,中,後序)、查詢(遞迴,非遞迴)、根插入遞迴(左旋,右旋)、最小最大值、刪除節點
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct node{ 5 int data; 6 struct node *left; 7
初學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')#這裡,讀取第一個列表 &
請使用迭代查詢一個list中最小和最大值,並返回一個tuple:# 測試 if findMinAndMax([]) != (None, None): print('測試失敗!') elif findMinAndMax([7]) != (7, 7): print('測試失敗!&
def findminmax(L): a = [] if L != a: min = L[0] max = L[0] for i in L: if min > i: min = i
要求:如果某個欄位=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子鏈,然後需要查出其中擁有某個特定值呢?這種需求在