mysql查询各科前3_MySQL 查询各科前三的数据
方法一:
SELECT sc.*,c.`
Cname` ,COUNT(sc.C)
FROM sc
LEFT JOIN sc a
ON sc.C = a.C AND sc.score >= a.score
LEFT JOIN course c
ON sc.C = c.C
WHERE sc.C = c.C
GROUP BY
sc.C,sc.S,sc.score
HAVING COUNT(sc.C)>=4
ORDER BY a.C,a.score DESC
解析:
先copy 一個sc 表中的數據,與原sc 進行對比。統計每個score 大于其他數據的計數。再按sc.C,sc.S進行分組
SELECT sc.*,COUNT(sc.C)
FROM sc
LEFT JOIN sc a
ON sc.C= a.C AND sc.score >=a.score
GROUP BY sc.C,sc.S
可以看到,第一行數據的count計數為 6,由于我們要取每科前三名,sc表中共有student S編號7個,
自身不納入count進行計數,則為6個需要取出前3--計數大于3的值。
SELECT sc.*,COUNT(sc.C)
FROM sc
LEFT JOIN sc a
ON sc.C= a.C AND sc.score >=a.score
GROUP BY
sc.C,sc.S,sc.score
HAVING COUNT(sc.C)>3ORDER BY a.C,a.score DESC
方法二:
SELECT a.* FROM
sc a
WHERE
(SELECT COUNT(*)
FROM sc
WHERE sc.C =a.C
AND a.score
ORDER BY a.C,a.score DESC
解析:
與方法一同理,復制一個表進行count計數
原文:https://www.cnblogs.com/jescs/p/12186019.html
總結
以上是生活随笔為你收集整理的mysql查询各科前3_MySQL 查询各科前三的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot 拦截器获取con
- 下一篇: owncloud 配置mysql_傻瓜式