程序地带

列出年龄在前 25% 的学生信息


思路: 拿到前 25% 的数据,首先得排序,然后最后的条件还有某个列小于 总体排序后个数的 25% 


这个列要随着排的表自动增长,这里使用了 自定义变量@row_num,然后还有 round() 函数,这两样之前都没有接触过. 自定义变量的赋值要用 := 赋值.


 


因为是 MYSQL, 不支持这种写法:


SELECT TOP 50 PERCENT * from (SELECT * FROM tb_student ORDER BY age DESC) a;

 


进入正题:


tb_student(sid,NAME,age,sex,mobilephone,address) 


SQL:


SELECT student.* ,(@row_num:=@row_num + 1) rid FROM
(SELECT @row_num:=0) t1,
(SELECT * FROM tb_student ORDER BY age DESC) student
WHERE (@row_num)<(SELECT ROUND(COUNT(*)/4) FROM tb_student);

或者这样:


SELECT a.*, @rownum FROM (SELECT @rownum:=0) rid JOIN (SELECT * FROM tb_student ORDER BY age DESC) a
WHERE (@rownum:=@rownum+1)<=(SELECT ROUND(COUNT(*)*0.25) FROM tb_student);

虽然拆开看我都知道什么意思,也能自己写出来,但是 我还是不太明白 它这个自定义变量怎么能跟着自动增长的, 因为我单独使用 下面的代码的时候,只出现一行数据,可能就是要搭配使用才行吧,如果有这方面比较懂的人士能给解答一下就多多感谢了!


SELECT (@row_num:=@row_num + 1) rid FROM
(SELECT @row_num:=0) t1

 


参考链接


关于自定义:自定义变量


关于 round() 函数:https://www.runoob.com/sql/sql-func-round.html


其他:


mysql 查询


查询


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42314153/article/details/112689269

随机推荐

zzulioj 1009: 求平均分

题目描述已知某位学生的数学、英语和计算机课程的成绩,求该生三门课程的平均分。输入输入三个整数,数据之间由空格隔开。输出输出占一行,包含一个实数,...

m0_53024529 阅读(319)

电脑键盘打字手法_正确打字-07

本文作者:花花4分钟阅读2020年/第18篇/1913字一打字想必大家都会,特别是我们从事电商工作的或者文字工作的人,对于打字的效率都有要求,二...

weixin_39953578 阅读(638)

JavaScript学习笔记(二十二)-- 原型及原型链

原型原型的出现,就是为了解决 构造函数的缺点也就是给我们提供了一个给对象添加函数的方法不然构造函数只能给对象添加属性,不能合理的添加函数就太LOW了prototype每一个...

Eric_qf 阅读(832)

电脑键盘打字手法_电脑键盘指法小知识

电脑键盘打字手法_电脑键盘指法小知识

对刚学电脑的朋友们来说,熟悉电脑键盘及打字是非常重要的。下面小编给大家分享了有关电脑键盘指法学习的相关知识,能快速引导你学习电脑入门,一起来看看吧!电脑键盘指...

weixin_39629188 阅读(485)