1. 程式人生 > >mysql查詢各班前3名成績

mysql查詢各班前3名成績

CREATE TABLE sc

(

  id    INT,

  name  VARCHAR(20),

  class VARCHAR(20),

  score INT

);



INSERT INTO sc VALUES (11, 'zx', '一年1班', 68);

INSERT INTO sc VALUES (12, 'zx1', '一年1班', 98);

INSERT INTO sc VALUES (13, 'zx2', '一年1班', 58);

INSERT INTO sc VALUES (14, 'zx3', '一年1班', 48);

INSERT INTO sc VALUES (15, 'zx4', '一年2班', 88);

INSERT INTO sc VALUES (16, 'zx5', '一年2班', 68);

INSERT INTO sc VALUES (17, 'zx6', '一年2班', 98);

INSERT INTO sc VALUES (18, 'zx7', '一年3班', 78);

INSERT INTO sc VALUES (19, 'zx8', '一年2班', 58);

INSERT INTO sc VALUES (20, 'zx9', '一年1班', 88);

INSERT INTO sc VALUES (21, 'zx10', '一年3班', 83);

INSERT INTO sc VALUES (22, 'zx11', '一年3班', 82);

INSERT INTO sc VALUES (23, 'zx12', '一年3班', 81);



SELECT

  s1.name,

  s1.class,

  s1.score

FROM sc s1

WHERE

  (

    SELECT count(1)

    FROM sc s2

    WHERE

      s1.class = s2.class AND s2.score >= s1.score

  ) <= 3

ORDER BY s1.class, s1.score DESC;

優化:使用儲存過程或函式來分批查詢 

相關推薦

mysql查詢班前3成績

CREATE TABLE sc ( id INT, name VARCHAR(20), class VARCHAR(20), score INT ); INSERT INTO sc VALUES (11,

mysql查詢班前3成績

CREATE TABLE sc (   id    INT,   name  VARCHAR(20),   class VARCHAR(20),   score INT ); INSERT INTO sc VALUES (11, 'zx', '一年1班',

mysql 查詢數據庫的占用大小

orm ble con 占用 大小 查詢 div form lec select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),‘ MB‘) as data_size, concat(truncate

mysql 查詢 班級中分數最高的 學生資訊

查詢: 各年級中 分數最高的學習資訊 示例表如下: create table it_student(id int primary key auto_increment,  -- 主鍵idname varchar(20),   -- 姓名gender enum('male',

mysql 查詢數據庫內表的占用大小

group index 占用 truncate des 數據 length ble mysql 查 select TABLE_NAME, concat(truncate(data_length/1024/1024,2),‘ MB‘) as data_size, concat

sql查詢每個學生的最高成績mysql語句

sql查詢 感覺 and select from style logs 字段 score 張三 語文 100 張三 數學 83 李四 語文 88 李四 數學 100 查詢每個學生的最高成績. select b.* from (select name,max(s

使用SQL Server和Mysql查詢所有數據庫、表和字段

ext shadow vpd mar 9.png 分享 type oss mys 一、使用sqlserver1、查詢所有的數據庫2、查詢當前數據庫的所有表名3、查詢指定表中所有字段名二、使用Mysql1、查詢所有的數據庫2、查詢當前數據庫的所有表名3、查詢指定表中所有字段名

MySql 查詢數據庫中所有表

tables 數據 所有 columns sql 查詢 sql from ati col 查詢數據庫中所有表名select table_name from information_schema.tables where table_schema=‘數據庫名‘ and tab

PCB MS SQL 通過表查詢字段信息和vb.net C# module類代碼

join time efault gui minor xtend style datetime fault 正式表:各字段內容獲取 DECLARE @tabname VARCHAR(20) SET @tabname = ‘ppeflow‘ SELECT @tabna

mysql 查詢(3)

備註: 本筆記是通過看 尚矽谷 mysql視訊的筆記: 分頁查詢: 一、應用場景 當要查詢的條目數太多,一頁顯示不全 二、語法 select 查詢列表 from 表 limit 【offset,

mysql查詢計劃欄位的含義

1.檢視執行計劃: explain + sql語句 select_type 查詢的型別,主要是用於區分普通查詢、聯合查詢、子查詢等複雜的查詢 1、SIMPLE:簡單的select查詢,查詢中不包含子查詢或者union 2、PRIMARY:查詢中包含任何複雜的子部分,最外層查詢則被標記

(1)mysql--查詢成績最高和最低的人

簡單描述: 成績表中有學生姓名、學生科目以及學生分數。查詢分數最高和分數最低的學生的以及學生的分數。注意的點如下: 1、group by,select 選擇的列,必須是group by 中的列,或者

MySQL查詢根據欄位重複內容只顯示最新的一條

例: SELECT * FROM user_bindcard_info WHERE (id IN ( SELECT MAX(id) FROM user_bindcard_info WHERE (vip_id IN(1000000006,1000000009,654323)

查詢成績大於門課程平均成績的所有學生的學號、課程號和成績

select Sno,Cno,Grade from SC x--從選修表中選擇學號、課程號、成績 WHERE Grade>(select avg(Grade)--選擇成績大於平均成績的 from SC y where y.Sno=x.Sno);--通過學號連線

mysql學習【第3篇】:使用DQL查詢資料

  狂神宣告 : 文章均為自己的學習筆記 , 轉載一定註明出處 ; 編輯不易 , 防君子不防小人~共勉 !  mysql學習【第3篇】:使用DQL查詢資料 DQL語言 DQL( Data Query Language 資料查詢語言 ) 查詢資料庫資料 , 如SEL

【搞定MySQL資料庫】第3篇:基礎架構:一條SQL查詢語句是如何執行的?

本文為本人學習極客時間《MySQL實戰45講》的學習筆記。 原文連結:https://time.geekbang.org/column/article/68319 輸入下面一條SQL語句,我們來分析下這條語句在MySQL內部的執行過程。 mysql> select * from T

mysql查詢欄位取前3位,後3位,中間3位,去除前3位,去除後3

擷取從第3位開始的一共8位數 SELECT SUBSTRING(payment_id,3,8) from sdb_ectools_payments  去掉字元後5位 SELECT SUBSTR(payment_id, 1, LENGTH(payment_id)-5) f

mysql 怎麼把查詢結果作為表繼續查詢

SELECT COUNT(1) FROM (select 欄位名 from 表名1 where  條件  group by 欄位名) as 表名2; 注: 必須要給查詢的結果集設定一個表名即(表名2)否則mysql會報錯。  

window10系統下使用python3.3版本實現mysql查詢

參考文件: 環境 windows10 | python3.3  方法如下:>下載安裝的指令碼https://bootstrap.pypa.io/ez_setup.py,下載該指令碼後執行      >python ez_setup.py    

mysql求分組的前3

具體思路就是,查詢出當前資料表裡,每一條資料在當前分組裡的排名。-- 效率不咋滴 誰有更好的方法-- SELECT     a.* FROM     (         SELECT             t1.*,             (