選取組內最小值的sql
今天群裡有個朋友提問如下:
查詢每一門課程的成績均大於等於80分的學生的學號、姓名和性別
請問SQL語句怎麼寫啊
好久沒寫sql了,這個我覺得就是求組內最小值吧。就寫個試試。
drop table student;
create table student
(
sno number,
sname varchar2(20),
ssex varchar2(4)
);
drop table course;
create table course
(
sno number,
cno number,
grade number
);
insert into student values(1,'yallonking','f');
insert into student values(2,'liangbi','m');
insert into student values(3,'dapeng','f');
insert into student values(4,'dux','m');
commit;
insert into course values(1,1,89);
insert into course values(1,2,80);
insert into course values(1,3,90);
insert into course values(2,1,89);
insert into course values(2,2,79);
insert into course values(2,3,70);
insert into course values(3,1,90);
insert into course values(3,2,80);
insert into course values(3,3,81);
commit;
SQL> select * from student;
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
2 liangbi m
3 dapeng f
4 dux m
SQL> select * from course;
SNO CNO GRADE
---------- ---------- ----------
1 1 89
1 2 80
1 3 90
2 1 89
2 2 79
2 3 70
3 1 90
3 2 80
3 3 81
9 rows selected.
SQL> select sno, sname, ssex
2 from sys.student
3 where sno in (select distinct sno
4 from (select c.*,
5 row_number() over(partition by sno order by grade) rn
6 from sys.course c) d
7 where rn = 1
8 and grade >= 80);
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
3 dapeng f
貌似達到要求了,不過感覺寫法應該有很多。哎...自己的sql給頹廢掉了..
--發到群裡,沒想到提問者是mysql庫,用不了oracle的分析函式,遂改為以下
SQL> select sno, sname, ssex
2 from sys.student
3 where sno in (select distinct sno
4 from (select sno, min(grade) min_grade
5 from sys.course c
6 group by sno)
7 where min_grade >= 80);
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
3 dapeng f
查詢每一門課程的成績均大於等於80分的學生的學號、姓名和性別
請問SQL語句怎麼寫啊
好久沒寫sql了,這個我覺得就是求組內最小值吧。就寫個試試。
drop table student;
create table student
(
sno number,
sname varchar2(20),
ssex varchar2(4)
);
drop table course;
create table course
(
sno number,
cno number,
grade number
);
insert into student values(1,'yallonking','f');
insert into student values(2,'liangbi','m');
insert into student values(3,'dapeng','f');
insert into student values(4,'dux','m');
commit;
insert into course values(1,1,89);
insert into course values(1,2,80);
insert into course values(1,3,90);
insert into course values(2,1,89);
insert into course values(2,2,79);
insert into course values(2,3,70);
insert into course values(3,1,90);
insert into course values(3,2,80);
insert into course values(3,3,81);
commit;
SQL> select * from student;
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
2 liangbi m
3 dapeng f
4 dux m
SQL> select * from course;
SNO CNO GRADE
---------- ---------- ----------
1 1 89
1 2 80
1 3 90
2 1 89
2 2 79
2 3 70
3 1 90
3 2 80
3 3 81
9 rows selected.
SQL> select sno, sname, ssex
2 from sys.student
3 where sno in (select distinct sno
4 from (select c.*,
5 row_number() over(partition by sno order by grade) rn
6 from sys.course c) d
7 where rn = 1
8 and grade >= 80);
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
3 dapeng f
貌似達到要求了,不過感覺寫法應該有很多。哎...自己的sql給頹廢掉了..
--發到群裡,沒想到提問者是mysql庫,用不了oracle的分析函式,遂改為以下
SQL> select sno, sname, ssex
2 from sys.student
3 where sno in (select distinct sno
4 from (select sno, min(grade) min_grade
5 from sys.course c
6 group by sno)
7 where min_grade >= 80);
SNO SNAME SSEX
---------- -------------------- ----
1 yallonking f
3 dapeng f
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26143577/viewspace-749247/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL優化:組內排序取最大值SQL優化排序
- SQL最佳化:組內排序取最大值SQL排序
- sql取每組最新資料SQL
- SQL Server 如何合併組內字串SQLServer字串
- sql分組查詢語句--行內分組(非聚合分組)SQL
- POJ 2442-Sequence(優先佇列-m組n個數每組取一個求n個最小值)佇列
- 關於號段選取的sql寫法SQL
- sql 按著時間分組,每組取 20 條資料SQL
- SQL 分組排序取最新一條記錄SQL排序
- 組建網路時如何選取交換機
- C++11獲取double型別的最大最小值C++型別
- sql 多組條資料取最新的一條資料SQL
- Sql group by 分組取時間最新的一條資料SQL
- js如何獲取文字框內被選中的字串JS字串
- MSSQL多列取最大或者最小值_轉載SQL
- javascript獲取select下拉選單所有項的內容JavaScript
- JavaScript獲取陣列最大值和最小值JavaScript陣列
- js獲取數字最小值程式碼例項JS
- js獲取陣列元素中的最大值和最小值JS陣列
- 列表外掛中獲取過濾的組織範圍以及是否勾選全部組織
- 【SQL】獲取指定範圍內結果集的實現方法SQL
- js獲取select選中項的值和文字內容JS
- 陣列呼叫c#讀取陣列中獲取最大最小值方法陣列C#
- SQL分組SQL
- js獲取陣列的最大值和最小值程式碼例項JS陣列
- js獲取點選單元格中的內容程式碼例項JS
- jquery實現的獲取select下拉選單value和文字內容jQuery
- Android 如何獲取RadioGroup選中RadioButton的內容Android
- 組內排名的實現方法
- 【TUNE_ORACLE】列出可以建立組合索引的SQL(回表再過濾選擇性高的列)的SQL參考Oracle索引SQL
- bootstrap22-內聯的核取方塊和單選按鈕的例項boot
- 隨機選組隨機
- JavaScript獲取選中checkbox核取方塊的選中值JavaScript
- js獲取偽元素選擇器規定的內容程式碼例項JS
- 【MFC】繫結資料到選單專案並獲取內容
- MySQL分組排序取前N條記錄 以及 生成自動數字序列 的SQLMySql排序
- mysql 分組取每個組的前幾名的問題MySql
- SQL 選擇SQL