C语言查询成绩前三名的女生,如何查找每个班级总成绩前3名的学生?

#7

kai2006-02-19 19:13

这个在标准SQL 里是支持的,在MS-SQL我刚才查了以下,没查到。你自己试试不就知道了。我用的是MySql,是可以的。

我学SQL 也不久,没什么经验。我学了一阵以后,突然在想,有些东西不大对头,人类的思想是不是有点问题,为什么要用这种SQL语句把思维方式固定死呢? 我更愿意用另一种方式来表达我的思想,比如这道题,我想这样表达我的思想:

1) 将学生成绩表排序,降序方式

2) 取出前3个记录。

这样是不是更直观些?

这样的话更像是在编程,其实这样的做法完全可以实现的。当你在console 黑屏幕下输入代码的时候, 你是在编程, 一种直观的表达, 这种思维方式与 现今的SQL方式是完全不同的, 我有一种直觉, 如果这种解释器能够研制成功的话, SQL 将被淘汰.

不知道, 我的想法你是否理解了, 我来举个复杂一点的题, 那就是那道求各班级前十名的题, 这道题的SQL 的命令怎么写, 我还想不出来, 但是如果用我的方式那么会变得很简单, 我的想法是这样的.

假设你有两个表, 一个为班级的表, 它只有一个 attribute: classID

另一个表为学生, 它的attribute 为: pupilID, classID, name, score

那么算法是这样的,

1) 在学生表中根据 classID 建立 subSet 的 集合

2) 依次对subSet 排序 (降序)

3) 从各个subSet 中取出前10名

那么代码会是这样的,

Vector v = null, // 一个容器变量, 用于函数返回值

v = createSubset(classID), // 现在已经根据 classID 建立了一系列的subSet, 并放在了一个 tempVector 中,

// 将这个tempVector 赋值给 v, 以便下面操作

for(int i = 0; i

{

((Set) v.elementAt(i) ).sort(Sort.DESC); // 排序

((Set) v.elementAt(i) ).displayAll(0, 9); // 及时输出, 从第一位到第十位

}

题外话,

我学了一些编程语言, 于是在想一个问题, 为什么有些语言不能成为语言, 从另一个角度来说就是那些成为主流语言的编程语言到底是什么受到人们的青睐, 也就是说肯定有某种因素在起作用.

我发现, 区别于主流语言和非主流语言的一个关键之处在于这么一个概念, 用一个单词来说就是: 分布式

主流语言支持 分布式思维方式, 非主流语言大多不支持. 而分布式思维方式是一种开放性的, 多维的, 自由的思维方式, 而非分布式的思维方式是一种封闭式的, 固定模式化式的, 需要技巧支持的思维方式. 比如Sql 询问语言, 还比如Lisp, Scheme 语言等.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值