use test2012校对一下:
go
if OBJECT_ID('sc') is not null
drop table sc
create table sc
(
name char(10),
kc char(10),
score decimal(5,2)
)
insert into sc
values('张三','语文',80),
('张三','数学',81),
('张三','英语',100),
('李四','语文',90),
('李四','数学',80),
('李四','英语',70),
('王五','语文',100),
('王五','数学',100),
('王五','英语',79)
2)本人稍微思索了一下,提供一下几种解决方案(只针对上表及其数据):
方案一:(分组,最小值)
为什么这么说?
首先针对上表及其表中仅有的数据,四种方案都能达到目的,即解决问题。如果对表中数据稍做变动,即原题不变,表格变为:
这时,方案一,方案四可行,方案二,方案三就不是可行方案了。
再次修改,原题不变,表格不变,附加条件:只能使用一次关键字select。
这时,方案一,二,三可行,方案四就不满足附加条件了。
PS:此题的演变还有很多种,不满足于会解题,会剖析问题,思维拓展,这样才会向成功靠近。一个问题的解决方案有多种,但是最优的却只有一种,重在思维能力,思索角度。
读者可以看看执行计划,分析,有什么想法呢?
3)总结:
此题虽陈旧,却值得琢磨,考察的是一个IT的思维能力,代码的核心在于算法。能从一个简单的问题挖掘出不一样的东西,这个才是IT的精髓。很遗憾,多年的老鸟居然一个也写不出来,或许你会说这并不能代表什么?但是可以想象他的代码质量及其性能如何?!解决问题固然是好,更体现IT精髓却不是它而是从解决方案中找到最优方案。
一句话,会解决问题只能说明你的基础,优化解决方案才会体现你的能力。