MySQL常用的几种查询场景

查询出某班级的学生成绩及成绩排名


SELECT
  total.*FROM (SELECT
    obj.class,
    obj.total_score,
    CASE WHEN @rowtotal = obj.total_score THEN @rownum WHEN @rowtotal := obj.total_score THEN @rownum := @rownum + 1 WHEN @rowtotal = 0 THEN @rownum := @rownum + 1 END AS rownum
  FROM (SELECT
           class,
           total_score
         FROM oc_exam_students_achievement
         ORDER BY total_score DESC) AS obj,
       (SELECT
           @rownum := 0,
           @rowtotal := NULL) r) AS totalWHERE total.class = 12;

# 结果class total_score rownum
12 4105
12 4006
12 0    7
12 5401
12 5382
12 5043
12 4684

查询出某班的第一名及排名


select s1.class,s1.`total_score`,(select count(0) + 1 from oc_exam_students_achievement s2 where s1.class = s2.class and s2.total_score > s1.total_score)rank from oc_exam_students_achievement s1 order by class,rank;

# 结果class total_score rank
501
12 5401
12 5382
12 5043
12 4684
12 4105
12 4006
12 07
14 01

按照班级分组计算出最高分、最低分、平均分、总分


select class,max(`total_score`),min(total_score),avg(total_score),sum(total_score) as `total_score` from oc_exam_students_achievement where (`grade` = 3) and (`class` = 12) and (`exam_id` = 18)  group by class;
# 结果claa max min avg sum
125400408.57142860

根据tags分组查询出科目和对应的数量


select tags,count(id) as article_count from tb_post group by tags order by article_count desc
# 结果tags article_count,
自动化测试、Python,20,
PHP,7,
社会心理学,5,
nginx,4,
laravel,PHP,4,
MySQL,4,
django,3,
科幻小说,3,
热爱阅读,2,
docker,2,
产品设计,1,
代码整洁,1,
工具,1,
自我修养,1,
二叉树,1,
思考力,1,
Supervisor,1,
vsftpd,1,
其他,1,
vagrant,1,
Linux,1,
程序员,1,
产品思路和设计,1,
rsync,scp,1,
beautifulsoup,1,
redis,1,
ssh,1

按照日期查询文章数


select DATE_FORMAT(posttime, '%Y年%m月') as years,DATE_FORMAT(posttime, '%Y-%m') as find_years,count(id) as article_num from tb_post group by years
# 结果year  find_year num
2021年02月2021-0255
2021年03月2021-0316

按时间来查询文章内容


select count(id) as count from tb_post where DATE_FORMAT(posttime, '%Y-%m') = '2021-02'orselect count(id) as count from tb_post where posttime like '%2021-02%';
# 结果
count55

mysql实现名次降序排列,其中成绩相同的排名相同。


SELECT
total_score AS total_score,
CASEWHEN @pre = total_score THEN
@pic + 0WHEN @pre := total_score THEN
@pic := @pic + 1ELSE
@pic := @pic + 1END AS Rank,exam_id,class,grade,student_id,numberFROM
oc_students_achievement AS s,
(SELECT @pre := NULL ,@pic := 0) AS init where s.exam_id = 19 and s.grade = 13 and s.class = 17 and s.exam_subject_id = 23ORDER BY
total_score DESC
(0)

相关推荐

  • mysql如何使用sql获取记录的行号

    通过sql获取选中行的行号 select b.rownum from (SELECT (@i:=@i+1) rownum ,a.* FROM sxxmhq a , (SELECT @i:=0) as ...

  • 模糊查询时最常用的四种经典Excel公式,超有用!

    个人微信号 | (ID:LiRuiExcel520) 微信服务号 | 跟李锐学Excel(ID:LiRuiExcel) 微信公众号 | Excel函数与公式(ID:ExcelLiRui) vlooku ...

  • Excel中多条件模糊查询汇总常用的四种公式

    原创作者 | 李锐 微信公众号 | Excel函数与公式(ID:ExcelLiRui) 微信个人号 | (ID:ExcelLiRui520) Excel中多条件模糊查询汇总常用的四种公式 在工作中经常 ...

  • 省中医经常用的11种中成药,为家人收藏起...

    省中医经常用的11种中成药,为家人收藏起来,早晚用得上! 1. 房颤心跳快体力疲乏--"守护神"--(仙茸护肾胶囊) 药理:温肾健脾.适用于腰膝酸软,畏寒肢冷,神疲乏力,自汗气短, ...

  • 气虚、血虚、阴虚、阳虚,中医常用的12种最好中成药,便宜又好用

    中医上,常见的虚证有气虚.血虚.阴虚.阳虚等,我也不给大家讲概念了,简洁明了的讲一下症状区别,同时推荐相应的中成药. 1.气虚:指身体元气不足,常见症状有身体虚弱.面色苍白.呼吸短促.四肢乏力.头晕. ...

  • 手机摄影最常用的6种构图方式!牢记!

    你是否遇到过这种情况:照片拍完之后发现,歪歪扭扭,左右不对称,头重脚轻. 这样的照片都缺少稳定性,画面的美感会下降.那为什么会出现这种情况?主要原因在于,我们对于画面的构思不够清晰,或者拍照的时候太匆 ...

  • 眼科常用的10种最佳中成药

    眼疾多与肝肾密切相关,眼科常用的10种中成药如下: 1.明目蒺藜丸 组成:蒺藜(盐水炙).菊花.地黄.当归.蔓荆子(微炒).密蒙花.朩贼.决明子(炒).蝉蜕.黄连.黄芩.荆芥.旋覆花.栀子(姜水炙). ...

  • 国医大师常用的11种疾病的克星中成药,便...

    国医大师常用的11种疾病的克星中成药,便宜但好用,建议收藏!   1.关节炎--克星中成药--蠲痹抗生丸   2.月经量少--克星中成药--乌鸡白凤丸   3.湿热下注--克星中成药--加味香连丸   ...

  • 调气机常用的四种方法

    艾国医 公众号 田法 可怎么调气机呢? 老师说,最常见的气机失调,有气虚气陷气滞气逆四种,针对这四种气机失调,可以用四大法.即气虚则补,气陷则升,气滞则疏,气逆则降. 然后老师便利用看病的闲余时间,给 ...

  • 烦躁易怒肝火旺,常用这7种中成药,该如何选择?

    肝火旺的症状 男性 头晕.恶心.头痛.失眠.舌苔变厚.脾气变得暴躁.易怒,此外还会出现大便干结.小便发黄等症状.注意戒烟.戒酒,多吃些苦瓜,多喝些菊花茶. 女性 月经不调,月经过少,月经提前或延后,甚 ...