課程表的某個SQL語句

2021-08-21 18:49:28 字數 1996 閱讀 5786

需求:

在postgresql測試過程如下:

sde=# select * from t1;

id | name

----------+------

20180001 | 張三

20180002 | 李四

20180003 | 王五

(3 行記錄)

sde=# select * from t2;

id | score | time

----------+-------+------------

20180001 | 88 | 2018-01-02

20180002 | 61 | 2018-01-02

20180001 | 91 | 2018-01-12

20180002 | 79 | 2018-01-12

20180001 | 85 | 2018-01-22

20180002 | 98 | 2018-01-22

(6 行記錄)

第一種方法:

sde=#  select t3.id,t3.name,t2.score from

sde-# (

sde(# select c.id,c.name as name,max(c.time) as time from

sde(# (

sde(# select a.name as name ,a.id as id,b.score as score,b.time as time

sde(# from t1 a left join t2 b on a.id=b.id

sde(# )

sde(# c group by c.id,c.name

sde(# ) t3 left join t2 on t3.id=t2.id and t3.time=t2.time;

id | name | score

----------+------+-------

20180001 | 張三 | 85

20180002 | 李四 | 98

20180003 | 王五 |

(3 行記錄)

第二種方法(使用with方法):

sde=#  with c as

sde-# (

sde(# select a.name as name ,a.id as id,b.score as score,b.time as time

sde(# from t1 a left join t2 b on a.id=b.id

sde(# ),

sde-# t3 as

sde-# (

sde(# select c.id,c.name as name,max(c.time) as time

sde(# from c group by c.id,c.name

sde(# )

sde-# select t3.id,t3.name,t2.score

sde-# from t3 left join t2 on t3.id=t2.id and t3.time=t2.time;

id | name | score

----------+------+-------

20180001 | 張三 | 85

20180002 | 李四 | 98

20180003 | 王五 |

(3 行記錄)

leetcode 課程表I,課程表II

課程表 你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入 2,1...

sql多表查詢 學生課程表查詢

學生表 序號,姓名,年齡,專業 create table s sno int 11 auto increment,sname varchar 125 sage int 11 sdept varchar 125 primary key sno 課程表 序號,課程名 create table c cno...

html課程表頁面

效果圖 html 部分 charset utf 8 課程表title align center 課程表h2 caption class info align center valign middle 專案td colspan 5 align center valign middle 上課td col...