西部数码备案系统和中国数据相比,哪个更好一些?可以从综合方面回答

西部数码和万网 中国数据 云主机哪家服务比较好?_百度知道
西部数码和万网 中国数据 云主机哪家服务比较好?
我有更好的答案
按默认排序
你可以选择在节假日或晚上(这种时间最能体现真实的服务水准),找客服沟通一下,看客服是否在,服务如何,沟通3-5次后再确定。
很多用户都是先沟通很长时间,然后再买的。
当然是阿里云要好一些了。咱们是代理,可以帮你开立VIP帐号,享受优惠。
什么万网,是万维网吗?
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁24小时服务
优质服务&&&品质保障
7×24维护&&安全数据
永远为客户提供最好、最放心的服务
99/月&&&&1100/年
CPU:INTEL EG 6核 X2
内存:512M DDR3 1333MHZ
系统盘:20G SAS 15k
数据盘:10G SAS 15k
带宽:2Mbps独享
199/月&&&&2200/年
CPU:INTEL EG 6核 X2
内存:1G DDR3 1333MHZ
系统盘:20G SAS
数据盘:20G SAS
带宽:5Mbps独享
299/月&&&&3300/年
CPU:INTEL EG 6核 X2
内存:2G DDR3 1333MHZ
系统盘:20G SAS 15k
数据盘:30G SAS 15k
带宽:5Mbps独享
399/月&&&&4400/年
CPU:INTEL EG 6核 X2
内存:3G DDR3 1333MHZ
系统盘:20G SAS 15k
数据盘:40G SAS 15k
带宽:5Mbps独享
500/月&&&&5500/年
CPU:INTEL XEON E5150
内存:2G DDR2 FBD
硬盘:73G SAS 15K
带宽:10Mbps独享
600/月&&&&6600/年
CPU:INTEL XEON E5150
内存:2G DDR2 FBD
硬盘:73G SAS 15K
带宽:10Mbps独享
1000/月&&&&11000/年
CPU:INTEL XEON E5150
内存:2G DDR2 FBD
硬盘:73G SAS 15K
带宽:10Mbps独享
800/月&&&&8800/年
CPU:INTEL XEON E5150
内存:2G DDR2 FBD
硬盘:73G SAS 15K
带宽:10Mbps独享
&新春佳节渐近,西安数据中心全体员工在此向广大客户致以最真挚的祝福和问候!感谢您长期以来对西安数据中心的关注与支持!在新的一年里我们将以更优质的产品和更真诚的服务回馈广大客户!根据国家规定结合我公司实际情况,现将西安数据中心2014年春节放假及值班安排通知如下:
& & 放假时间:日-2月6日(放假八天)
& & 如有问题需要联系我们,请尽量在管理中心提交有问必答,我们将在第一时间处理您的问题。
& & 以下是我们节日期间的紧急联系电话:
& & 电话:028- & &&
& & 感谢您的支持!西安数据中心将一如既往为您提供一流的产品和优质的服务。
西安数据中心
西部数据中心拥有强大的资源与硬件渠道优势,提供电信/网通/双线机房多种线路选择。服务器硬件仅采用国际品牌 整机大厂认可的配件。并经公司流水线严格的兼容性与稳定性测试。确保服务器运行效率与稳定性。
据美国相关报道称,自2009年以来,美国海军一直在研发和测试一系列微型机器人潜艇。这些潜艇在水下自动运行,收集盐分与温度数据,每隔1小时左右短暂浮出水面,并通过卫星回传数据。这些数据将提高友军使用声呐系统的有效性,更易于侦察和跟踪敌军潜艇。这其实正是大数据在军事中应用的一个范例。
大数据指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理并整理成为帮助组织经营决策更积极目的的资讯。这些数据包罗万象,不光包括人们在互联网上发布的信息,全世界的工业设备、汽车、电表上有着无数的数码传感器,随时测量和传递着有关位置、运动、震动、温度、湿度乃至空气中化学物质的变化,也产生了海量的数据信息。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理,通过“加工”实现数据的“增值”。
美国军方关注大数据
伴随着物联网、云计算、移动互联网等新技术的迅猛发展,数据正以前所未有的速度不断地增长和积累。人们不禁惊呼,大数据时代已经到来!科学技术的最新进展往往最先应用在军事上,大数据无疑引起了各国军方和政府机构的普遍关注和浓厚兴趣。此前,大数据最典型的范例就是洛杉矶警察局和加利福尼亚大学合作利用大数据预测犯罪的发生。
近年来,一些国际顶级学术刊物也相继出版专刊探讨大数据问题。其中,《自然》曾推出“Big Data”专刊,从互联网技术、环境科学、生物医药等多个方面介绍了海量数据带来的挑战。《科学》则出版关于数据处理的专刊讨论了数据洪流(Data Deluge)所带来的挑战,并说明大数据对于科学研究的重要性。欧洲信息学与数学研究协会会刊也专门讨论了大数据时代的数据管理与技术创新等问题,并介绍了欧洲科研机构开展的研究活动和进展情况。当然,对大数据的研究与应用,也已引起各国政府部门的高度重视,各国陆续出台有关大数据的国家政策和战略。2012年,美国奥巴马政府宣布将投资2亿美元用于启动“大数据研发倡议”,旨在提高从海量和复杂的数据中分析萃取信息的能力,这是继1993年美国宣布“信息高速公路”计划后的又一次重大科技发展部署。
继美国率先开启大数据国家战略先河之后,其他各国也随后跟进,已经或即将出台相应的战略举措。日本政府推出了新的综合战略“活力ICT日本”,重点关注大数据应用所需的云计算、传感器、社会化媒体等智能技术开发。2013年,英国政府宣布将注资6亿英镑,发展大数据、合成生物等8类高新技术,其中信息行业新兴的大数据技术将获得1.89亿英镑,占据总投资的近三分之一。澳大利亚政府也在近期出台了其大数据战略规划方案。作为信息化程度最高的世界顶级军队系统,为应对庞大数据挑战及继续谋求信息优势,迎接“大数据”时代的来临,美国国防部率先采取措施,其下属的国防高级研究计划署近期开始资助一些“大数据”项目的研发,这包括“网络内部威胁”项目、“洞察力”项目、“机器读取”项目、“心灵之眼”项目、“X-数据”项目,等等。
国家信息安全面临挑战
大数据一般是指那些大小已经超出了传统意义上的尺度,一般的软件工具难以捕捉、存储、管理和分析的数据,一般以“太字节(TB)”为单位。通常用4个“V”来概括大数据的主要特征:其一,数据体量巨大(Volume);其二,数据类别繁多(Variety);其三,数据生成和处理速度快(Velocity);其四,数据价值密度低(Value)。
大数据的上述特征对产业界、科学界、军方及国家信息安全领域而言,机遇与挑战并存。比如,大数据如火如荼的发展,瓦解了传统的信息体系架构,从以数据仓库为中心转化为具有流动、连接和信息共享的数据池,其技术的研发将促进信息安全技术更上一个台阶,使信息安全监测更精细、更实时和更高效。一方面,基于大数据分析的智能驱动型安全模型,从单纯的日志分析扩展到全面的数据分析,极大地拓展了安全分析的广度和深度,有助于更好地监视网络异常行为,找出数据风险点,进行主动的信息防御。另一方面,网络攻击行为所留下的“蛛丝马迹”都以数据的形式隐藏在大数据中,利用大数据技术能更有针对性地应对信息安全威胁,使得网络攻击行为无所遁形,有助于找到发起攻击的源头。
当然,伴随着数据的进一步集中和数据量的增大,现有的信息安全手段已经不能满足大数据时代的信息安全要求,对海量数据进行安全防护变得更加困难,数据的分布式处理也加大了数据泄露的风险。这主要体现在以下四个方面:其一,大数据成为网络攻击的显著目标;其二,大数据加大信息泄露风险;其三,大数据威胁现有的存储和安防措施;其四,大数据技术可被应用到攻击手段中。可见,在大数据时代,信息已成为国家和社会发展的重要战略资源,作为“未来世界新石油”的大数据更是新一轮科技竞争的战略制高点,一个国家在网络空间的数据主权已经成为继陆权、海权、空权、天权之后的另一个大国博弈的焦点。特别是随着网络的不断普及和发展,人们对信息安全的认识也不断发展。信息安全已不再仅是作用于军事或外交方面的宏大领域,而是公众都可能触及到的层面;信息安全也不单是技术问题,而是涉及到公众个体安全、社会公共安全和国家信息安全的方方面面,是关系诸多领域的战略性问题。
构筑信息安全“防火墙”
美国启动的“大数据研发倡议”涉及联邦政府的6个部门来大力推动和改善大数据相关技术。美国国防部及其下属的国防高级研究计划署(DARPA)是为推动该倡议而承担任务的六部门之一。国家信息安全战略一般具有三大要素,即基础设施、战争和外交。因此,对处在第二次浪潮和第三次浪潮之间的国家来说,未来的国家信息安全战略,不仅要从这三个层面解决传统信息安全中的短板问题,还要提前谋划,及时转型,将大数据列为重要着力点,加强顶层设计和政策引导。
注重国家及军方信息基础设施保护,切实提升信息安全保障与防范能力。如在军事领域,随着数据库的爆炸性增长,一方面,数据库的漏洞越来越多,可攻击的目标也随之增加,且攻击目标将更为暴露;另一方面,隐藏在海量数据中的攻击行为往往难以被及时探测。而数据安全是大数据应用的根本保障,核心数据的泄露将对整个战局造成致命性影响。因此,必须加强信息设施保护,确保信息安全。特别是要打破数据割据与封锁,整合大数据处理资源,推动重点数据库之间的数据共享,加强对高级可持续攻击(APT)的防护。
加强信息战能力提升,有效确保制信息权。信息优势是新军事革命的核心和支柱,是取得战争胜利的关键。信息战开辟了第五维战场,战场主动权从制陆、制海、制空、制天权转移到制信息权。美国政府的“大数据研发倡议”通过全球战略下的“新军事战略”和“反恐战略”将军方纳入其中。因此,他国国家信息安全战略,一方面,要借助大数据平台,整合强化国家情报信息网络体系,提高军事情报信息处理能力,从而实时获取、交换和使用数字化信息,及时满足各级指挥官、战斗人员和保障人员的信息需要,通过提高战场态势感知能力来加强战斗效能;另一方面,要利用大数据安全技术的研发,部署纵深防护、多层配置的安全保密措施,来对抗敌方的信息渗透和情报窃取。
充分发挥信息运作和心理战策略,积极施展公共外交。大数据时代,国家信息安全战略应注重将信息交流作为公共外交有效手段的利用。一方面,通过大数据技术搜集、分析、甄别他国的信息传播,从而准确透视其战略意图,切实维护国家利益;另一方面,要积极挖掘大数据技术在开展公共外交领域中的工具价值,从营造国家发展的有利国际大环境而着力。大数据时代是国家信息安全战略又一个契机与挑战,只有将大数据融入其中,重视大数据的开发利用,把握住新科技浪潮的引擎,才能多层次、多方位、多维度地维护国家信息安全,捍卫国家“信息边疆”!
大数据源于云计算、物联网和移动互联,而云计算是人们追求的一种模式和路径,数据是由它带来的。无论是国家还是城市,都会涉及到四块内容:经济产业发展、政府职能、社会的公共职能、军事和国防安全。关于经济产业的发展和政府职能的关系,近日召开的十八届三中全会提出“治理”,而不是“管理”,就是使管理的主体变得多元化。另外,十八届三中全会还设立了国家安全委员会。各个行业都可以涵盖到这四部分当中。
在社会发展和技术发展过程中,会涉及到各种数据处理问题,技术发展和社会发展都需要突破这个问题瓶颈。所以我认为,大数据是智慧城市和移动互联发展的瓶颈。如果没有解决这个问题,我们将永远沉浸在云计算、物联网、移动互联、智慧城市等所有的梦幻当中。你的数据没有互联、没有互通、没有互享、没有互用,云计算、物联网、移动互联、智慧城市都只能是梦幻。
中美大数据差异
中国和美国对大数据的理解和重视程度是不同的。美国提出这个概念的时候是基于用数据创造了新的模式和内容。而中国在基础设施建设和整个信息系统的发展上,跟美国有着非常大的差距,这个差距能够大到十年、二十年。但是关于云计算、移动互联网这块,中国起步比美国仅仅晚两到三年,传统的信息系统的技术中国跟美国又差很多,特别是在应用系统完善性上。所以美国对大数据的理解是要用数据分析新的模式、新的路径,那中国对大数据到底是怎样的?
无论是政府、企业,还是其他各行各业,我们要提大数据,一定要从数据的起源,从它的产生、存储、处理、统计、分析、挖掘、应用、互联互通等角度出发。站在整个数据价值链上去考虑,不能像美国那样去考虑。因为美国的系统基本成熟,中国不能照它的路去走,否则就会像中国的汽车一样,发展这么长时间仍然存在很大的问题:虽然产能第一,但汽车的核心发动机、电速箱、底盘,甚至是外形设计,都受到别人的严重制约。因此,我们一定要用自身对数据的理解迎合中国的大数据时代,从而能够用我们的一种办法,去实现对数据的使用。
信息化的核心就是数据
目前,包括美国在内,大数据问题也不能完全解决,中国也是一样的。只有解决了大数据问题,才能真正的让云计算、移动互联网落地。国家呼吁了多年云计算,也花了不少冤枉钱,除却政策、体制、机制问题外,还有一个问题就是没有办法解决数据分析这个根本问题。
信息化的核心就是数据。数据是信息化的部分表述,无论用了什么硬件,用什么手段,安装什么系统,里面窜动的永远是不变的数据。在信息化建设过程当中,只有将数据真正关联起来、关注数据、聚焦数据的时候,才是真正的懂得了信息化的实质。在发展模式转型的过程中,尤其是制造业,产业结构需要升级,需要创新驱动。创新驱动要从底层基础材料等各方面出发,并把信息技术当中的数据量给挖掘出来,这时候才是全面的融合。
数据的实质和作用正在发生质变。任何生产、生活必须要具备几个因素:生产要素、劳动力、土地及自然资源。土地不言而喻;自然资源是指能源、矿产等;很多年前,有人曾经提出信息和技术也可以成为生产要素,未果。但在大数据时代,我们可以将数据定性为生产要素,它不仅是技术和信息的载体,还是其表现形式。比如,专利技术可以注册资金,其实就是一个文件,它的具体表现形式可能是专利、著作等方面。这样做了以后我们更能清楚的阐述当今科技的核心实质。将来人类大脑里的经验和知识都可以逐渐的转化为数据。别人采用你的经验,其实就是使用你经验当中的数据。
为什么目前所有媒体、政府、天使投资人、VC等都关注大数据?因为当一个新的生产要素加入到任何原有的生产方式的时候,就会对原有要素的比例、权重和质量的原有存在状态产生影响,并形成新的爆发式的增长,甚至是技术性和产业性的革命,进而促进人类文明的进步。
如何发展大数据产业?
以前是各种传播公司和科技巨头如IBM、微软、甲骨文等控制着信息系统的发展方向,是他们在引导技术的发展。但随着云计算、大数据的发展,这种模式好像遇到了挑战。那么如何发展大数据产业?大概有以下三个方面:众包、开源和长尾。
众包——集众人之力。现在能向IBM、甲骨文、EMC、微软发起挑战的都是通过众包的模式进行的。集众人之力,也称作“群狼战术”。因为单个的某个企业买不起IBM的服务器,买不起甲骨文的数据库,买不起EMC的存储,所以要做分布式、虚拟化的调度。因为有这样一群人开始尝试,于是出现了开源。开源的概念其实源于原来的传统产业。有一个做化妆品的大企业聘请了大量的科研人员,研究各种配方,但后来发现这样做的产品成本会非常高,每个新出的化妆品价格必须在六百到八百美元左右,而且科研人员因研究任务复杂几乎被逼疯了。其中有一个化学工程师索性把他要研究的任务扔到网上了,许多志愿者开始研究这个东西,给他出各种的主意后又把结果反馈给他,这就是开源的由来。后来该企业的研究经费降低了20%左右。开源可以汇众人之智,降低成本。
长尾——享众人之功。长尾就是指原来龙头企业能占领60%、70%的市场份额,然后逐渐的被长尾现象所替代,即龙头企业占到30%左右的市场份额,剩下的被各个领域占领,各个方向的人一起分享。因为“群狼战术”,“狼”的筹码不能缺太多,“群狼”一起分享,这样效率就提高了。大数据时代,建设智慧城市还会遇到很多问题,有一个问题就是以数据为生产要素的新一代信息化建设处处繁华似锦,但肯定不能一花一果。所以我建议:一定要做好顶层化的设计,整个的部门想做什么,先有一个大概的方向;第二是强制化,成熟一些了,马上就往前推进行;第三一定要市场化。市场化、强制化、顶层化才能形成创新驱动。
如何判断是否要进行数据驱动创新?
数据驱动建设信息化是有量化指标和架构的,有的东西能做,有的东西暂时不要做。从技术上看着都能实现,但是有的一踩就是地雷,有的就是结果。所以我认为有几个指标供参考,什么可以用数据驱动创新,什么不可以。
架构力度,是指某个产业单位时间内创造出来的生产总值。
基础约束度一定要小,不要受体制、机制、政策、资本的各种约束。如果政府在体制和机制上,没有形成突破,诸如国家统计局,从下面采集上来的数据就有很多的问题,掺沙和水,这时候让做大数据挖掘优化,挖出来的还是沙子和水,体制和机制都有问题的时候,没有办法挖,这是一个约束度的问题。
投资收益度,投的少,收的多,或者叫公益度。公益度指社会服务,诸如我们的社保、文化、教育、医疗。市场接受数据的力度和敏感度。力度越粗,敏感度越敏锐的才有利。比如,你给他一堆甚至都带有错误信息的数据,他都愿意买的时候,这个就可以做;你给了他一个说全国中考的50万个重点要素,孩子们读完以后能涨20分,所有的家长都觉得是谎话,但是觉得能涨20分也行,这就是力度很粗糙,敏感度很高,这可以让你迅速的形成商业模式。
具体的实现和应用的速度要快,中国是发展中国家,速度一定要快,速度慢不仅不能追赶别人还会被落的更远。用户群和地域区域覆盖一定要广。要能跨越行业门槛。在技术上不要总想挑战世界性的难题,只要挑战你的门槛,能跨越这个高度也是可以行的。社会经济发展的支撑度。如果你跑到贵州一个乡里面搞智慧城镇,那他们的收入和需求,根本没办法支撑信息系统建设的成本。
行业的关联度、渗透度和应用维度。你做的数据产品服务除了关注你这个行业以外还要能为别的行业服务。关联度越高,成功的可能性越大。即使我选择错了,也能够转向调头。原有行业规模竞争激烈的程度。行业的规模尽量大,竞争尽量的激烈,它正在转型期,需要这样一个创新的手段去推动。如果用以上这些指标去衡量阿里巴巴、淘宝、facebook、推特,它们几乎完全满足。
用最好的机房服务每一位客户
黑龙江联通
浙江电信机房简介,机房均严格按照A级机房标准建设实施,配有良好的网络资源、空调系统、消防系统、安全系统、机架及包厢配置、综合布线系统、防震设施等,可有效保证用户网络的高可靠性连接和数据传输的高效和通畅。
吉安电信机房位于江西省吉安市大桥西路吉安电信城北分公司,城北分公司紧邻井冈山、是整个吉安市的节点所在。拥有高达100G的的光纤线路直连ChinaNet骨干网、完备的网络环境以及专业化的网络管理技术。凭借优越的地理位置,为客户提供快捷、高质量的服务。XBIDC凭借先进的网络设备和路由QoS部署,所有机柜1000M直连核心骨干设备、无需经过多重跳转,把吉安机房打造成一个一流的WEB精品段机房。在独立运营在此机房的同时并派有九人的7&24小时网维团队,提供高质量的售后服务的同时为您节省了时间和成本,为您的互联网时代发展提供坚实的基础。
江苏镇江电信机房坐落于江苏省镇江市电信公司大楼内,于2007年8月新建的电信级 标准IDC机房,中国电信B级机房,是江苏镇江电信面向全国开放的宽带互联应用服务中心。 机房采用标准耐燃性、防尘材料,墙面采用防静电漆 ,地板为防静电地板;提供钢制标准机架;安装有机房专用的空调,进行专门强化送风,并且江苏镇江电信IDC机房拥有一流的基础设施、高速的带宽资源。 江苏镇江电信将为机房用户提供更全面、更专业、更优质的服务。
辽宁鞍山联通机房属联通旗舰数据中心之一。经过数年的发展与扩容,截至2011年12月出口带宽总量已达200G,托管设备总量3000余台。骨干光缆直连ChinaNet核心,有效保障网络的高速稳定。机房采用华为9306作为IDC核心交换设备支撑IDC内部通信,防止机房内部瓶颈;核心设备全面采用双机双上联,杜绝单点故障,并保障网络整体的可靠性。两路一类市电采用10KV三相线路,互为主备。双路冗余大功率智能UPS系统,德国奔驰MTU柴油发电机组,保证电力持续不间断供应。机房整体抗震8级,每平方地板承重800KG。美国开利中央空调系统保证通风、恒温、恒湿。机房温度:15-22摄氏度,相对湿度:30%~50%。
黑龙江联通机房位于黑龙江省大庆市让胡路区, 以黑龙江联通优质网络资源为依托,拥有四星级的机房环境、优质的网络条件为政府、金融、物流、制造等行业,以及互联网服务提供商、互联网内容提供商、系统集成商等企业客户,提供安全、可靠、稳定的网络和应用平台。黑龙江联通按照8级防震设计,防静电地板,承重650公斤/平米;49U标准机架,机架数600个,精确送风设计,设有普通客户区,VIP客户区,政企客户区等。西安数据中心联合中新软件最新的金盾防火墙集群技术实现12G防护,双路UPS电力保证、恒温恒湿、烟雾探测,并提供七人的7&24机房网维技术支持团队。
7×24小时服务
服务热线: 400-
常用软件下载
他们的成功是我们的荣耀天相--西部建设:中国建筑第六工程局有限公司拟以持有的天津中建新纪元商品混凝土有限公司股权认购公司非公开发行股份项目资产评估说明
西部建设:中国建筑第六工程局有限公司拟以持有的天津中建新纪元商品混凝土有限公司股权认购公司非公开发行股份项目资产评估说明
【】【】【】【】【】【】SQL综合应用学习-数据库专栏,SQL Server-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
SQL综合应用学习-数据库专栏,SQL Server
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
看完测试完下面这些试题,你的sql水平一定会有新的提高。下面我们先看一下题设:二维表 t(f1,f2,f3,f4,f5,f6,f7) 表示如下关系:┌─────┬────┬─────┬─────┬─────┬─────┬─────┐│& 学生id& │学生姓名│& 课程id& │ 课程名称 │&& 成绩&& │& 教师id& │ 教师姓名 │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s3&&& │&& 王五 │&&& k4&&& │&& 政治&& │&&& 53&&& │&&& t4&&& │& 赵老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s1&&& │&& 张三 │&&& k1&&& │&& 数学&& │&&& 61&&& │&&& t1&&& │& 张老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s2&&& │&& 李四 │&&& k3&&& │&& 英语&& │&&& 88&&& │&&& t3&&& │& 李老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s1&&& │&& 张三 │&&& k4&&& │&& 政治&& │&&& 77&&& │&&& t4&&& │& 赵老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s2&&& │&& 李四 │&&& k4&&& │&& 政治&& │&&& 67&&& │&&& t5&&& │& 周老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s3&&& │&& 王五 │&&& k2&&& │&& 语文&& │&&& 90&&& │&&& t2&&& │& 王老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s3&&& │&& 王五 │&&& k1&&& │&& 数学&& │&&& 55&&& │&&& t1&&& │& 张老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s1&&& │&& 张三 │&&& k2&&& │&& 语文&& │&&& 81&&& │&&& t2&&& │& 王老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s4&&& │&& 赵六 │&&& k2&&& │&& 语文&& │&&& 59&&& │&&& t1&&& │& 王老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s1&&& │&& 张三 │&&& k3&&& │&& 英语&& │&&& 37&&& │&&& t3&&& │& 李老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&&& s2&&& │&& 李四 │&&& k1&&& │&& 数学&& │&&& 81&&& │&&& t1&&& │& 张老师& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&& ....&& │&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │├─────┼────┼─────┼─────┼─────┼─────┼─────┤│&& ....&& │&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │&&&&&&&&& │└─────┴────┴─────┴─────┴─────┴─────┴─────┘为便于大家更好的理解,我们将 t 表起名为"成绩表"1.如果 t 表还有一字段 f 数据类型为自动增量整型(唯一,不会重复),& 而且 t 表中含有除 f 字段外,请删除其它字段完全相同的重复多余的脏记录数据:& 本问题就是一个清理"逻辑重复"记录的问题,当然,这种情况完全可以利用主键约束来& 杜绝!然而,现实情况经常是原始数据在"洗涤"后,方可安全使用,而且逻辑主键过早的& 约束,将会给采集原始数据带来不便,例如:从刷卡机上读取考勤记录。到了应用数据& 的时候,脏数据就该被扫地出门了! 之所以题中要保留一个自动标识列,是因为它的确& 是下面答案所必须的前提:& delete l&&& from "成绩表" l&&&&&&&& join "成绩表" r&&&&&&&&&&&&&&&&&&&&&& on l."学生id" = r."学生id" and l."课程id" = r."课程id" and l.f & r.f& 这是思路最精巧且最直接有效的方法之一。用不等自联接,正好可以将同一组重复数& 据中 f 字段值最小的那一条留下,并选出其它的删掉,如果只有一条,自然也不会被选& 中了。这里还要强调一下,大家一定要分清楚被操作的基本表也就是 delete 关键字& 后的表和过滤条件所使用的由基本表连接而成的二维表数据集,也就是 from 子句的& 全部。在自连接的 from 子句至少要取一个别名来引用基本表。别名的使用在编写大& 量类似结构的 sql 时非常方便,而且利于统一程序构造动态 sql。如有必要加强条件,& 还可继续使用 where 子句。如果上面的例子还不够直观,下面模仿一个不等自联接,& 有一组数 (1,2,3),作一个不等自联接,令左子集大于右子集,是:& 2 1& 3 1& 3 2& 如果现在选出左子集,就是 2 和 3 了。1 在右边没有比它更小的数据可以与之匹配,& 因此被过滤了。如果数据大量重复,效率会差强人意,幸亏不是 select ,而是 delete& 无需返回结果集,影响自然小多了。& delete t& from 成绩表 t& where f not in (select min(f)&&&&&&&&&&&&&&&&&&& from 成绩表 i &&&&&&&&&&&&&&& group by i.学生id,i.课程id&&&&&&&&&&&&&&&&& having count(*)&1&&&&&&&&&&&&&&&& )&&&&&&& and f not in (select min(f)&&&&&&&&&&&&&&&&&&&&&&& from 成绩表 i &&&&&&&&&&&&&&&&&&& group by i.学生id, i.课程id&&&&&&&&&&&&&&&&&&&&& having count(*)=1&&&&&&&&&&&&&&&&&&&& )& 这种方法思路很简单,就像翻译自然语言,很精确地描述了符合条件记录的特性,甚至& 第二个条件的确多余。至少应该用一个 &= 号合并这两个条件或只保留任意一个条件,& 提高效率。& delete t&&& from 成绩表 t&& where f & (select min(f)&&&&&&&&&&&&&&& from 成绩表 as i&&&&&&&&&&&&&& where i.学生id = t.学生id &&&&&&&&&&&&&&&&&&&& and i.课程id = t.课程id&&&&&&&&&&& group by i.学生id, i.课程id&&&&&&&&&&&& )& 这种方法,基本上是方法一的相关子查询版本,了解笛卡尔积的读者能会好理解些,而& 且用到了统计函数,因此效率不是太高。细心的读者会发现子查询里的 group by 子& 句没有必要,去掉它应该会提高一些效率的。& 关于 delete 语句的调试,有经验的程序员都会先用无害的 select 暂时代替危险的& delete。例如:& select l.*& --delect l 暂时注释掉&&& from "成绩表" l&&&&&&&& join "成绩表" r&&&&&&&&&&& on l."学生id" = r."学生id" and l."课程id" = r."课程id" and l.f&r.f& 这样,极大地减小了在线数据被无意破坏的可能性,当然数据提前备份也很重要。同理& update 和 insert 写操作也应照此行事。从数据库原理的关系运算的角度来看 insert、& update 和 delete 这些写操作都属于典型的"选择(selection)"运算,update 和 insert& 而且还是"投影(projection)"运算,它们都是这些关系运算的"写"应用的表现形式。& 其实,查询的目的也本来无非就是浏览、删除、更& 新或插入。通常写操作也比读操作消耗更大,如果索引过多,只会降低效率。& 选择"子查询"还是"连接"在效率是有差别的,但最关键的差别还是表现在查询的结果& 集的读写性上,开发人员在写一个"只读"应用的查询记录集时,"子查询"和"连接"各自& 的效率就是应该首先考虑的问题,但是如果要实现"可写"应用的查询结果集,则无论是& 相关还是非相关子查询都是在复杂应用中难以避免的。& 以上解决方案中,应该说第一种方法,简洁有效,很有创意,是值得推荐的方法。当然,& 最简单的写法应该是:& delete t&&& from t,t t1&& where t.学生id=t1.学生id and t.课程id=t.课程id and t.f & t1.f& 其实这就是方法一的"标准"(但确实实不是《ansi/iso sql》标准)连接写法,以下各& 题答案为了便于读者理解,一般不采用这种写法,这也是《ansi/iso sql》标准所鼓& 励的,join 确实更容易地表达表之间的关系,有兴趣的读者可自行改写。如果使用& "*="实现两表以上的外连接时,要注意此时 where 子句的 and 条件是有顺序的,尽& 管《ansi/iso sql》标准不允许 where 条件的顺序影响查询结果,但是 from 子句& 的各表连接的顺序可以影响查询结果。2.列印各科成绩最高和最低的相关记录: (就是各门课程的最高、最低分的学生和老师)& 课程id,课程名称, 最高分,学生id,学生姓名,教师id,教师姓名,& 最低分,学生id,学生姓名,教师id,教师姓名& 如果这道题要是仅仅求出各科成绩最高分或最低分,则是一道非常简单的题了:&select l.课程id, max(l.课程名称), max(l.成绩) as 最高分, min(l.成绩) as 最低分&&& from 成绩表 lgroup by l.课程id& & 但是,刁钻的题目却是要列出各科最高和最低成绩的相关记录,这也往往才是真正需求。& 既然已经选出各科最高和最低分,那么,剩下的就是把学生和教师的信息并入这个结果& 集。如果照这样写下去,非常麻烦,因为要添加的字段太多了,很快就使代码变得难于& 管理。还是换个思路吧:& select l.课程id,l.课程名称,l.[成绩] as 最高分,l.[学生id],l.[学生姓名],l.[教师id],l.[教师姓名]&&&&&&&&&&&&&&&&&&&&&&&&&&& ,r.[成绩] as 最低分,r.[学生id],r.[学生姓名],r.[教师id],r.[教师姓名]&&& from 成绩表 l &&&&&&&& join 成绩表 as r on l.[课程id] = r.[课程id] && where l.[成绩] = (select max(il.[成绩]) &&&&&&&&&&&&&&&&&&&&&& from 成绩表 as [il] &&&&&&&&&&&&&&&&&&&&& where l.[课程id] = il.[课程id]&&&&&&&&&&&&&&&&&& group by il.[课程id]&&&&&&&&&&&&&&&&&&&& )&&&&&&&& and&&&&&&&& r.[成绩] = (select min(ir.[成绩]) &&&&&&&&&&&&&&&&&&&&&& from 成绩表 as [ir] &&&&&&&&&&&&&&&&&&&&& where r.[课程id] = ir.[课程id]&&&&&&&&&&&&&&&&&& group by ir.[课程id]&&&&&&&&&&&&&&&&&&&& )& 乍一看答案,好像很复杂,其实如果掌握了构造交叉透视表的基本方法和相关子查询的& 知识,问题迎刃而解。由于最低和最高分都是针对课程信息的,该答案巧妙地把课程信& 息合并到了最高分的数据集中,当然也可以合并到最低分中。代码中规中矩,风格很好,& 可读性也是不错的。3.按平均成绩从高到低顺序,列印所有学生的四门(数学,语文,英语,政治)课程成绩: (就是每个学生的四门课程的成绩单)& 学生id,学生姓名,数学,语文,英语,政治,有效课程数,有效平均分& (注: 有效课程即在 t 表中有该学生的成绩记录,如不明白可不列印"有效课程数"和"有效平均分")& 需要说明的是: 题目之所以明确提出"四门(数学,语文,英语,政治)课程"是有道理的,& 因为实现时,的确无法避免使原基本表中的行上的数据的值影响列,这又是一个典型的& "行变列"的相关子查询:select 学生id,max(学生姓名) as 学生姓名,&(select 成绩 from 成绩表 where 学生id=t.学生id and 课程id=k1) as 数学 ,&&&&&&& (select 成绩 from 成绩表 where 学生id=t.学生id and 课程id=k2) as 语文 ,&&&&&&& (select 成绩 from 成绩表 where 学生id=t.学生id and 课程id=k3) as 英语 ,&&&&&&& (select 成绩 from 成绩表 where 学生id=t.学生id and 课程id=k4) as 政治 ,&&&&&&& count(*) as 有效课程数, avg(t.成绩) as 平均成绩&&& from 成绩表 as tgroup by 学生idorder by 平均成绩& 这可以说也是一个很规矩的解法,在这种应用场合,子查询要比联接代码可读性强得多。& 如果数据库引擎认为把它解析成联接更好,那就由它去吧,其实本来相关子查询也肯定含有连接。& 这里再补充一下,在实际应用中如果再加一张表 ranks(rank,minvalue,maxvalue):& ┌─────┬─────┬─────┐& │&& rank&& │ minvalue │ maxvalue │& ├─────┼─────┼─────┤& │&&& a&&&& │&&& 90&&& │&& 100&&& │& ├─────┼─────┼─────┤& │&&& b&&&& │&&& 80&&& │&&& 89&&& │& ├─────┼─────┼─────┤& │&&& c&&&& │&&& 70&&& │&&& 79&&& │& ├─────┼─────┼─────┤& │&&& d&&&& │&&& 60&&& │&&& 69&&& │& ├─────┼─────┼─────┤& │&&& e&&&& │&&&& 0&&& │&&& 59&&& │& └─────┴─────┴─────┘& 就可以实现一个非常有实用价值的应用:select 学生id,max(学生姓名) as 学生姓名&&&&&& ,(select 成绩 from 成绩表 t where 学生id=t0.学生id and 课程id=k1) as 数学&&&&&& ,(select max(rank) from ranks ,成绩表 t&&&&&&&&&& where t.成绩 &= ranks.minvalue&&&&&&&&&&&&&&&& and t.成绩 &= ranks.maxvalue&&&&&&&&&&&&&&&& and t.学生id=t0.学生id and t.课程id=k1& &&&&&&&&&& ) as 数学级别&&&&&& ,(select 成绩 from 成绩表 t where 学生id=t0.学生id and 课程id=k2) as 语文&&&&&& ,(select min(rank)&&&&&&&&&& from ranks ,成绩表 t&&&&&&&&&& where t.成绩 &= ranks.minvalue&&&&&&&&&&&&&&&& and t.成绩 &= ranks.maxvalue&&&&&&&&&&&&&&&& and t.学生id=t0.学生id and t.课程id=k2& &&&&&&&&&& ) as 语文级别&&&&&& ,(select 成绩 from 成绩表 t where 学生id=t0.学生id and 课程id=k3) as 英语&&&&&& ,(select max(rank)&&&&&&&&&& from ranks ,成绩表 t&&&&&&&&&& where t.成绩 &= ranks.minvalue&&&&&&&&&&&&&&&& and t.成绩 &= ranks.maxvalue&&&&&&&&&&&&&&&& and t.学生id=t0.学生id and t.课程id=k3& &&&&&&&&&& ) as 英语级别&&&&&& ,(select 成绩 from 成绩表 t where 学生id=t0.学生id and 课程id=k4) as 政治&&&&&& ,(select min(rank)&&&&&&&&&& from ranks ,成绩表 t&&&&&&&&&& where t.成绩 &= ranks.minvalue&&&&&&&&&&&&&&&& and t.成绩 &= ranks.maxvalue&&&&&&&&&&&&&&&& and t.学生id=t0.学生id and t.课程id=k4& &&&&&&&&&& ) as 政治级别&&&&&& ,count(*),avg(t0.成绩)&&&&&& ,(select max(rank) &&&&&&&&&& from ranks &&&&&&&&&& where avg(t0.成绩) &= ranks.minvalue&&&&&&&&&&&&&&&& and avg(t0.成绩) &= ranks.maxvalue&&&&&&&&&& ) as 平均级别from 成绩表 t0group by 学生id& 这里表面上使用了不等连接,再仔细想想,ranks 表中每条记录的区间是没有交集的,& 其实也可以认为是等值连接,这样的表设计无疑存在着良好的扩展性,如果题目只要求& 列印(学生id,学生姓名,有效课程数,有效平均分,平均分级别):& select 学生id,max(学生姓名) as 学生姓名,count(*),avg(t0.成绩)&&&&&&&& ,(select max(rank) &&&&&&&&&&&& from ranks&&&&&&&&&&& where avg(t0.成绩) &= ranks.minvalue&&&&&&&&&&&&&&&&& and avg(t0.成绩) &= ranks.maxvalue&&&&&&&&&& ) as 平均级别from t as t0group by 学生id& 则这样的解决方案就比较全面了。& 回到原题,再介绍一个比较取巧的办法,仅需一个简单分组查询就可解决问题,有经验的读者可能已经想到了& ,那就是 case:& select 学生id, min(学生姓名),&&&&&&&& sum(case 课程id when k1 then 成绩 else 0 end) as 数学,&&&&&&&& sum(case 课程id when k2 then 成绩 else 0 end) as 语文,&&&&&&&& sum(case 课程id when k3 then 成绩 else 0 end) as 英语,&&&&&&&& sum(case 课程id when k4 then 成绩 else 0 end) as 政治,&&&&&&&& count(*) as 有效课程数, avg(t.成绩) as 平均成绩&&& from 成绩表 as tgroup by 学生idorder by 平均成绩 desc& 虽然可能初看答案感觉有点怪,其实很好理解,可读性并不低,效率也很高。但它不能& 像前一个答案那样,在成绩中区分出某一门课这个学生究竟是缺考 (null),还是真得& 零分。这个解法充分利用了 case 语句进行数据分类的作用: case 将成绩按课程分& 成四类,sum 用来消去多余的 0。& select [t].[学生id],max([t].[学生姓名]) as 学生姓名,&&&&&&&& max([t1].[成绩]) as 数学,& max([t2].[成绩]) as 语文,& max([t3].[成绩]) as 英语,& max([t4].[成绩]) as 政治, & count([t].[课程id]) as 有效课程数, &&&&&&&& (isnull(max([t1].[成绩]),0) + && isnull(max([t2].[成绩]),0) + && isnull(max([t3].[成绩]),0) + && isnull(max([t4].[成绩]),0)) / count([t].[课程id]) as 有效平均分&&& from 成绩表 t &&&&&&&& left join 成绩表 as [t1]& on [t].[学生id] = [t1].[学生id] and [t1].[课程id] = k1 &&&&&&&& left join 成绩表 as [t2]& on [t].[学生id] = [t2].[学生id] and [t2].[课程id] = k2 &&&&&&&& left join 成绩表 as [t3]& on [t].[学生id] = [t3].[学生id] and [t3].[课程id] = k3 &&&&&&&& left join 成绩表 as [t4]& on [t].[学生id] = [t4].[学生id] and [t4].[课程id] = k4 group by [t].[学生id]order by 有效平均分 desc& 这个方法是相当正统的联接解法,尽管写起来麻烦了些,但还是不难理解的。再从实用& 角度考虑一下,真实需求往往不是象本题明确提出"列印四门 (数学,语文,英语,政治)& 课程"这样的相对静态的需求,该是动态 sql 大显身手的时候了,很明显方法一的写法& 无疑是利用程序构造动态 sql 的最好选择,当然另两个 sql 规律还是挺明显的,同样& 不难构造。以 case 版答案为例: 先用一个游标遍历,取出所有课程凑成:& sum(case 课程id when 课程名称 then 成绩 else 0 end) as 课程名称 形式,& 再补上 select 和 from、where 等必要条件,一个生成动态成绩单的 sql 就诞生了,& 只要再由相关程序调用执行即可,这样就可以算一个更完善的解决方案了。& 其实,最类似的典型应用是在主、细关系中的主表投影中实现细表的汇总统计行,& 例如两张表: && master(f,f1,f2 ...) 一对多 details(f,f3,f4 ...)& & select *&&&&&&&& ,( select count(*)&&&&&&&&&&&&& from details&&&&&&&&&&&& where master.f = details.f&&&&&&&&& )&&&&&&&& ,( select sum(f3)&&&&&&&&&&&&& from details&&&&&&&&&&&& where master.f = details.f&&&&&&&&& )&&& from master4.按各科不平均成绩从低到高和及格率的百分数从高到低顺序,统计并列印各科平均成绩和不及格率的百分数(用"n行"表示): (就是分析哪门课程难)& 课程id,课程名称,平均成绩,及格百分比& select 课程id,max(课程名称) as 课程名称,avg(成绩) as 平均成绩&&&&&&&& ,str(100 * sum(case when 成绩 &=60 then 1 else 0 end)/count(*))+% as 及格百分比&&& from 成绩表 tgroup by 课程idorder by 及格百分比 desc& 这道题应该说是算简单的了,就是用"行"来提供表现形式的。只要想明白要对数据如& 何分组,取统计聚集函数,就万事大吉了。5.列印四门课程平均成绩和及格率的百分数(用"1行4列"表示): (就是分析哪门课程难)& 数学平均分,数学及格百分数,语文平均分,语文及格百分数,英语平均分,英语及格百分数,政治平均分,政治及格百分数& 这道题其实就是上一题的"列"表现形式版本,相对于上一题,本题是静态的,因为本题& 同第三题一样利用行上的数据构造了列,要实现扩展必须再利用另外的程序构造动态& sql:& select sum(case when 课程id = k1 then 成绩 else 0 end)/sum(case 课程id when k1 then 1 else 0 end) as 数学平均分&&&&&&&& ,100 * sum(case when 课程id = k1 and 成绩 &= 60 then 1 else 0 end)/sum(case when 课程id = k1 then 1 else 0 end) as 数学及格百分数&&&&&&&& ,sum(case when 课程id = k2 then 成绩 else 0 end)/sum(case 课程id when k2 then 1 else 0 end) as 语文平均分 &&&&&&&& ,100 * sum(case when 课程id = k2 and 成绩 &= 60 then 1 else 0 end)/sum(case when 课程id = k2 then 1 else 0 end) as 语文及格百分数&&&&&&&& ,sum(case when 课程id = k3 then 成绩 else 0 end)/sum(case 课程id when k3 then 1 else 0 end) as 英语平均分&&&&&&&& ,100 * sum(case when 课程id = k3 and 成绩 &= 60 then 1 else 0 end)/sum(case when 课程id = k3 then 1 else 0 end) as 英语及格百分数&&&&&&&& ,sum(case when 课程id = k4 then 成绩 else 0 end)/sum(case 课程id when k4 then 1 else 0 end) as 政治平均分&&&&&&&& ,100 * sum(case when 课程id = k4 and 成绩 &= 60 then 1 else 0 end)/sum(case when 课程id = k4 then 1 else 0 end) as 政治及格百分数&& from 成绩表 t& 这一句看起来很长,但实际上是最经典的 case 运用,很实用的数据分析技术。先将原& 表中的成绩一列连续投影 8 次备用于四门不同课程,充分利用 case 和数据的值域& [k1,k2,k3,k4]来划分数据,再利用 sum() [1 + ...+ 1] 实现了看似本来应& 该用 count(*) 的计数器的功能,这里面不要说联接和子查询,甚至连 group by 分组& 的痕迹都找不到!如果读起来吃力,完全可以先只保留一个字段,相对好理解些,看懂后& 逐一补全。本题也可以算一个"行变列"的交叉透视表示例吧! 另外,"行"相对于"列"& 是动态的,"行"是相对无限的,"列"是相对有限的,"行"的增删是应用级的,可"随意"增& 删,"列"的增删是管理级的,不要轻易变动!6.按不同老师所教不同课程平均分从高到低列印: (就是分析哪个老师的哪个课程水平高)& 教师id,教师姓名,课程id,课程名称,平均分& select 教师id,max(教师姓名) as 教师姓名,课程id,max(课程名称) as 课程名称,avg(成绩) as 平均成绩&&& from 成绩表 tgroup by 课程id,教师idorder by avg(成绩) desc& 这道题的确没啥好说的,就算闭着眼,不动手,答案也应脱口而出!& 如果平均分按去掉一个最高分和一个最低分后取得,则也不难写出:& select 教师id,max(教师姓名),课程id,max(课程名称) as 课程名称 --,avg(成绩) as 平均成绩&&&&&&&& ,(sum(成绩)&&&&&&&&&& -(select max(成绩) &&&&&&&&&&&&&& from 成绩表 &&&&&&&&&&&&& where 课程id= t1.课程id and 教师id = t1.教师id)&&&&&&&&&& -(select min(成绩) &&&&&&&&&&&&&& from 成绩表 &&&&&&&&&&&&& where 课程id= t1.课程id and 教师id = t1.教师id))&&&&&&&&& / cast((select count(*) -2&&&&&&&&&&&&&&&&&&& from 成绩表 &&&&&&&&&&&&&&&&&& where 课程id= t1.课程id and 教师id = t1.教师id) as float) as 平均分from 成绩表 as t1where (select count(*) -2&&&&&&&& from 成绩表 &&&&&&& where 课程id = t1.课程id and 教师id = t1.教师id) &0group by 课程id,教师idorder by 平均分 desc********************************************************************************************7.列印数学成绩第 10 名到第 15 名的学生成绩单& 或列印平均成绩第 10 名到第 15 名的学生成绩单& [学生id],[学生姓名],数学,语文,英语,政治,平均成绩& 如果只考虑一门课程,如:数学成绩,非常简单:& select top 5 *&& from t& where 课程id =k1 &&&&&&& and 成绩 not in(select top 15 成绩&&&&&&&&&&&&&&&&&&&&&&&&& from t&&&&&&&&&&&&&&&&&&&&& order by 成绩 desc&&&&&&&&&&&&&&&&&&&&&& )order by 成绩 descunion& select *&&& from t&& where 课程id =k1 &&&&&&&& and 成绩 not in(select top 10 成绩&&&&&&&&&&&&&&&&&&&&&&&&&& from t&&&&&&&&&&&&&&&&&&&&&& order by 成绩 desc&&&&&&&&&&&&&&&&&&&&&&&& )&&&&&&&& and 成绩 in(select top 15 成绩&&&&&&&&&&&&&&&&&&&&&& from t&&&&&&&&&&&&&&&&&& order by 成绩 desc&&&&&&&&&&&&&&&&&&& )order by 成绩 desc& 从逻辑上说,第 10 名到第 15 名就是从原前 15 名,"再"挑出前 5 名不要,保留剩下& 的 5 名。第二种写法是从前 15 名里挑出不属于原前 10 名的记录,把两个数据集做& 一个差,因此要多用一个& 子查询,效率相对较低,它,如果要有《ansi/iso sql》的 except& 关键字就是最理想的了。& 这种技巧在数据"分页"的应用中经常利用,只要遵循如下原则即可:&& select top @pagesize *&&&& from t&&& where sortfield not in (select top @pagesize * @pagei sortfield&&&&&&&&&&&&&&&&&&&&&&&&&&&&& from t&&&&&&&&&&&&&&&&&&&&&&&&& order by sortfield&&&&&&&&&&&&&&&&&&&&&&&&&&& )&order by sortfield& 至此,该题考察的主要目的已经达到。至于列印明晰成绩单:& [学生id],[学生姓名],数学,语文,英语,政治,平均成绩 前面也有类似的题目,做起来& 确实麻烦,因此下面仅提供参考答案,就不赘述了:& select& distinct top 5&&&&&& [成绩表].[学生id],&&&&&& [成绩表].[学生姓名] as 学生姓名,&&&&&& [t1].[成绩] as 数学,&&&&&& [t2].[成绩] as 语文,&&&&&& [t3].[成绩] as 英语,&&&&&& [t4].[成绩] as 政治,&&&&&& isnull([t1].[成绩],0) + isnull([t2].[成绩],0) + isnull([t3].[成绩],0) + isnull([t4].[成绩],0) as 总分&& from [成绩表] &&&&&&&&&&&& left join [成绩表] as [t1] &&&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t1].[学生id] and [t1].[课程id] = k1 &&&&&&&&&&&& left join [成绩表] as [t2] &&&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t2].[学生id] and [t2].[课程id] = k2 &&&&&&&&&&&& left join [成绩表] as [t3] &&&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t3].[学生id] and [t3].[课程id] = k3 &&&&&&&&&&&& left join [成绩表] as [t4] &&&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t4].[学生id] and [t4].[课程id] = k4 where isnull([t1].[成绩],0) + isnull([t2].[成绩],0) + isnull([t3].[成绩],0) + isnull([t4].[成绩],0)&&&&& not in &&&&& (select &&&&&&&&&&&& distinct&&&&&&&&&&&& top 15 with ties&&&&&&&&&&&& isnull([t1].[成绩],0) + isnull([t2].[成绩],0) + isnull([t3].[成绩],0) + isnull([t4].[成绩],0)&&&&&& from [成绩表] &&&&&&&&&&& left join [成绩表] as [t1] &&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t1].[学生id] and [t1].[课程id] = k1 &&&&&&&&&&& left join [成绩表] as [t2] &&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t2].[学生id] and [t2].[课程id] = k2 &&&&&&&&&&& left join [成绩表] as [t3] &&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t3].[学生id] and [t3].[课程id] = k3 &&&&&&&&&&& left join [成绩表] as [t4] &&&&&&&&&&&&&&&&&&&&& on [成绩表].[学生id] = [t4].[学生id] and [t4].[课程id] = k4 &&&&&& order by isnull([t1].[成绩],0) + isnull([t2].[成绩],0) + isnull([t3].[成绩],0) + isnull([t4].[成绩],0) desc)& 最后还要多说一句: 一般 top 关键字与 order by 子句合用才有真正意义。
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:}

我要回帖

更多关于 西部数码管理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信