国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SQL分組后取topN

這篇具有很好參考價值的文章主要介紹了SQL分組后取topN。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

準(zhǔn)備數(shù)據(jù)

create table SC(
SId varchar(10) comment "學(xué)生ID",
CId varchar(10) comment "課程ID",
score decimal(18,1) comment "課程成績");

insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);

1、TOP 1

求每門課程中成績最好的人

使用窗口函數(shù):

SELECT SId ,CId,score from (
SELECT SId,CId,score,dense_rank() over (partition by CId ORDER BY score desc) as ranking from sc ) new 
where ranking=1

利用表鏈接

SELECT a.*,b.max_score from sc a 
INNER JOIN (
SELECT CId,max(score) max_score
from sc
GROUP BY CId ) b 
on a.CId= b.CId and a.score= b.max_score;

使用子查詢

SELECT * from sc a 
where score = (SELECT max(score) from sc  where a.CId=CId )

2、TOP N

求每門課程成績前兩人

使用窗口函數(shù):

SELECT SId,CId,score from (
SELECT SId,CId,score,rank() over (PARTITION by CId ORDER BY score DESC) as ranking
from sc ) b
where ranking<=2;

使用自身左鏈接

SELECT SId,CId,score from (
SELECT a.* 
from sc a left  JOIN sc b 
on a.CId= b.CId and a.score <b.score  ORDER BY a.score DESC) new
GROUP BY SId,CId,score
HAVING count(CId)<2
ORDER BY CId;

結(jié)果:

SQL分組后取topN,sql,數(shù)據(jù)庫

3、三種排名的方式

#這是代碼
SELECT SId,CId,score,
row_number() over (partition by CId ORDER BY score desc) as row_number2,
rank() over (partition by CId ORDER BY score desc) as rank2,
dense_rank() over (partition by CId ORDER BY score desc) as dense_rank2
from sc
where CId = "01";

這是對CID分組,按分?jǐn)?shù)排名的表

SQL分組后取topN,sql,數(shù)據(jù)庫

上圖中3中不同的排名方式,對應(yīng)sql窗口函數(shù)的三種

row_number : 就是按1-2-3順序排

rank:就是按 1-1-3 排列--這就是?美國式排名

dense_rank:就是按 1-1-2-2-3排列--這就是中國式排名

請牢記這三種排名哦?。?!

應(yīng)用:

需求:求每個班級每科成績的第一名的學(xué)生文章來源地址http://www.zghlxwxcb.cn/news/detail-687048.html

select name,subject,score,class
from (select name,subject,score,class,rank()
over (partition by class,subject order by score desc) as rank from score) score_tmp
where rank = 1;

到了這里,關(guān)于SQL分組后取topN的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • sql數(shù)據(jù)庫怎么備份,sql 實時備份

    sql數(shù)據(jù)庫怎么備份,sql 實時備份

    在當(dāng)今互聯(lián)網(wǎng)時代,數(shù)據(jù)已經(jīng)成為企業(yè)的核心資產(chǎn)。然而,數(shù)據(jù)的安全性和完整性面臨硬件問題、軟件故障、人工操作錯誤等各種威脅。為了保證數(shù)據(jù)的安全,實時備份已經(jīng)成為公司必須采取的重要措施之一。下面我們就重點介紹SQL實時備份的重要實施方法。 SQL實時備份的必

    2024年02月10日
    瀏覽(26)
  • SQL Server數(shù)據(jù)庫——創(chuàng)建數(shù)據(jù)庫

    SQL Server數(shù)據(jù)庫——創(chuàng)建數(shù)據(jù)庫

    目錄 一、界面方式創(chuàng)建數(shù)據(jù)庫 1.1創(chuàng)建數(shù)據(jù)庫xscj,數(shù)據(jù)文件和日志文件的屬性按默認(rèn)值設(shè)置 ?1.2在xscj數(shù)據(jù)庫中增加文件xcsj1,其屬性均取系統(tǒng)默認(rèn)值 ?1.3在數(shù)據(jù)庫xscj中增加一個名為myGroup的文件組。 1.4數(shù)據(jù)庫的重命名? 1.5數(shù)據(jù)庫的刪除? 二、命令方式創(chuàng)建數(shù)據(jù)庫 以創(chuàng)建學(xué)生管

    2024年02月01日
    瀏覽(31)
  • sql 創(chuàng)建sql server數(shù)據(jù)庫文件組

    可以在建立數(shù)據(jù)庫時候創(chuàng)建 如: CREATE DATABASE MyDB ON PRIMARY ? ? ? ? ? ? ? ? ? ? ? ? ? --主文件組和主要數(shù)據(jù)文件 ? ( NAME=\\\'MyDB_Primary\\\', ? ?FILENAME= \\\'c:MyDB_Prm.mdf\\\'), FILEGROUP MyDB_FG1 ? ? ? ? ? ? ? ? ? --用戶定義文件組1 ? ( NAME = \\\'MyDB_FG1_Dat1\\\', ? ?FILENAME = \\\'c:MyDB_FG1_1.ndf\\\'), ?--次要數(shù)

    2024年02月08日
    瀏覽(94)
  • SQL數(shù)據(jù)庫案例1——創(chuàng)建商店數(shù)據(jù)庫

    SQL數(shù)據(jù)庫案例1——創(chuàng)建商店數(shù)據(jù)庫

    創(chuàng)建商店數(shù)據(jù)庫Commodities_Management 創(chuàng)建商品表、供應(yīng)商表、進(jìn)貨表、銷售表 各表分別輸入數(shù)據(jù) 庫名:Commodities_Management 字符集:utf16 表一:商品表 字段名 類型 長度 約束 商品編號 varchar 10 外鍵(參照進(jìn)貨表) 商品名 varchar 30 — 規(guī)格 varchar 20 — 供應(yīng)商編號 varchar 10 非空 表二:

    2024年02月12日
    瀏覽(26)
  • SQL 數(shù)據(jù)庫語句- 創(chuàng)建和管理數(shù)據(jù)庫

    SQL CREATE DATABASE 語句用于創(chuàng)建一個新的 SQL 數(shù)據(jù)庫。 以下 SQL 語句創(chuàng)建了一個名為 \\\"testDB\\\" 的數(shù)據(jù)庫: 通過這個簡單的語句,你可以成功地創(chuàng)建一個名為 \\\"testDB\\\" 的數(shù)據(jù)庫。記得在實際應(yīng)用中,你可能需要添加其他選項,比如指定字符集、校對規(guī)則等,以滿足具體需求。 SQL DRO

    2024年02月05日
    瀏覽(37)
  • 數(shù)據(jù)庫復(fù)試—關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL

    數(shù)據(jù)庫復(fù)試—關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL

    SQL:結(jié)構(gòu)化查詢語言 以教材中的學(xué)生-課程數(shù)據(jù)庫為例進(jìn)行SQL基礎(chǔ)語法的復(fù)習(xí) 數(shù)據(jù)庫實驗環(huán)境選擇SQLServer 11 學(xué)生表Student( Sno ,Sname,Ssex,Sage,Sdept) 課程表Course( Cno ,Cname,Cpno,Ccredit) 學(xué)生選課表SC( Sno,Cno ,Grade) 數(shù)據(jù)建立 學(xué)生表數(shù)據(jù) 學(xué)號Sno 姓名 Sname 性別 Ssex 年齡 Sage 所在系 Sdept

    2024年01月24日
    瀏覽(24)
  • 【Sql】Sql Server 2008 數(shù)據(jù)庫附加,錯誤:9004

    【問題描述】 數(shù)據(jù)庫文件存在異常狀況,有可能是因為硬盤有壞區(qū)引起的。 附加數(shù)據(jù)庫的時候,提示錯誤9004。 【解決方法】 假設(shè)數(shù)據(jù)庫名稱為:UFDATA_001_2023 請按順序執(zhí)行以下步驟: 1、將數(shù)據(jù)庫的文件名:UFDATA_001_2023復(fù)制到別的位置留作備用; 2、新建數(shù)據(jù)庫:UFDATA_001_

    2024年02月15日
    瀏覽(93)
  • SQL 數(shù)據(jù)庫復(fù)制

    SQL 數(shù)據(jù)庫復(fù)制

    當(dāng)需要將一臺機器(源機器)上的一個數(shù)據(jù)庫完全復(fù)制到另一臺機器(目標(biāo)機器)上時, 可以選擇先在源機器上備份該數(shù)據(jù)庫,然后在目標(biāo)機器上還原該備份的方法。 在項目搬移到另一個服務(wù)器上的時候,可以使用這種方法。我之前搬了個50多G的數(shù)據(jù),我就先生成備份,然

    2024年02月03日
    瀏覽(26)
  • SQL 數(shù)據(jù)庫

    SQL 數(shù)據(jù)庫

    【1】 MySQL安裝配置教程(超級詳細(xì)、保姆級) 【2】 MySQL+Navicat安裝配置教程(超級詳細(xì)、保姆級) 【戴師兄】SQL入門免費教程 刷題鏈接:https://share.mubu.com/doc/4BHMMbbvIMb 學(xué)習(xí)筆記:https://share.mubu.com/doc/uf3vg8s5ar 【1】 零基礎(chǔ)入門SQL - 知乎 學(xué)習(xí)筆記: https://mubu.com/doc/6M8yHBsz9lY

    2024年02月11日
    瀏覽(20)
  • 數(shù)據(jù)庫基礎(chǔ)——數(shù)據(jù)庫、數(shù)據(jù)表和SQL語句

    數(shù)據(jù)庫基礎(chǔ)——數(shù)據(jù)庫、數(shù)據(jù)表和SQL語句

    數(shù)據(jù)庫是用來存儲、管理數(shù)據(jù)的倉庫 數(shù)據(jù)表是數(shù)據(jù)的存儲結(jié)構(gòu) Structured Query Language,結(jié)構(gòu)化查詢語言,用來操作數(shù)據(jù)庫 安裝MySQL,自行百度 進(jìn)入cmd使用命令 mysql -hAddress -uUser -p(Password) 登錄數(shù)據(jù)庫 -p后直接回車可進(jìn)入密文登錄 如果出現(xiàn)以下報錯,則打開任務(wù)管理器-服務(wù)-開啟

    2024年02月09日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包