WITH ranked_scores AS (
SELECT
s.student_id,
s.name,
sc.score,
ROW_NUMBER() OVER (PARTITION BY s.grade_code ORDER BY sc.score DESC) AS rnk
FROM
students s
JOIN
scores sc ON s.student_id = sc.student_id
WHERE
s.grade_code = 'S1'
AND sc.subject = '物理'
)
SELECT
student_id,
name,
score,
rnk
FROM
ranked_scores
ranked_scores
with ranked_scores as(
select s.student_id,
s.name,
sc.score,
row_number() over(
partition by s.grade_code
order by sc.score desc
) as rnk
from students s join scores sc
on s.student_id = sc.student_id
where
s.grade_code = 'S1'
and
sc.subject = '物理'
)
select
student_id,
name,
score,
rnk
from
ranked_scores
with ranked_table as(
select s.student_id,
s.name,
sc.score,
row_number() over(
partition by s.grade_code
order by sc.score desc
) as rnk
from students s join scores sc
on s.student_id = sc.student_id
where
s.grade_code = 'S1'
and
sc.subject = '物理'
)
select
student_id,
name,
score,
rnk
from
ranked_table
with ranked_table as(
select s.student_id,
s.name,
sc.score,
row_number() over(
partition by s.grade_code
order by sc.score desc
) as rnk
from students s join scores sc
on s.student_id = sc.student_id
where
s.grade_code = 'S1'
and
sc.subject = '物理'
)
select
student_id,
name,
score
rnk
from
ranked_table
select st.student_id as student_id,
st.name as name,
s.score as score,
row_number() over(order by score desc) as rnk
from students st
join scores s on st.student_id = s.student_id
order by rnk
limit 10;
select s.name ,s.class_code ,s.grade_code ,t.name as head_teacher_name
from students s left join teachers t
on s.class_code = t.head_teacher order by s.student_id