我们经常会遇到各种分类统计问题,须要将这些结果一次显示出来。这次老师提出的要求是我想看60分下面多少人。60~70多少人,70~80多少人。80~90多少人,90~100多少人。他们曾经做的统计信息是。同样分数的有多少人,不同的分数都会在chart图表里显示一列,这种效果一般是不被须要的,并且数据多的时候也会乱七八糟,没有美感,所以老师提出上面開始的要求。

        他们曾经的效果相应的sql语句是:

<span style="font-size:18px;"><strong>select TestScore As 分数,COUNT(TestScore) As 人数 from T_Scores  where ExamID= '" + hs["ExamID"] + "' group by TestScore</strong></span>

        查询结果:

                  

        这种查询结果,有几条记录chart图表就会有多少个柱状条,记录越多就会显得杂乱无章。

        改动后的sql语句:

<pre name="code" class="sql"><span style="font-size:18px;"><strong>select count(result1) as '0~60',count(result2) as '60~70',count(result3) as '70~80', count(result4) as '80~90',count(result5) as '90~100'
from( select (case when TestScore>=0 and TestScore<60 then (StudentNo) end) result1,
(case when TestScore>=60 and TestScore<70 then (StudentNo) end) result2,
(case when TestScore>=70 and TestScore<80 then (StudentNo) end) result3,
(case when TestScore>=80 and TestScore<90 then (StudentNo) end) result4,
(case when TestScore>=90 then (StudentNo) end) result5
from T_Scores where ExamID= '" + hs["ExamID"]+" ')t</strong></span>

        查询结果:

            

        这样对各个阶段的人数是多少。就能非常清楚的知道了。再对查询结果稍作处理。列和行交换一下。这样就是5行记录。每行就是一个阶段相应的总人数。这样每次查询的结果都是5条。相应绑定的chart表就仅仅有5条柱状条。

而他们曾经的查询结果是不一定的,得依据学生的成绩而定。所以相应绑定的chart图表的柱状条数也非常多,他们会一个学生分数就会相应一条柱状条。

改动之前的就相当于一个具体的记录,而人们往往常常须要的不是一个具体的记录。是整体的大概情况。仅仅有出现故障或特殊需求时才会去看一些具体的情况。

这正相应着常说的一句话,“不谋全局者 不足谋一域”。然后大家做的时候就往往将他抛至一边了,所以要试着将一些常说的大道理付诸到咱们的行动上来。

SQL查询各阶段的统计信息的更多相关文章

  1. SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变

    前提  本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段 ...

  2. SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)

    本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...

  3. SQL Server 数据库表的统计信息的更新

             最近在调整基础信息数据时,新增了几个客户类型,意想不到的事情发生了,在使用新增的客户类型作为 查询条件查询报表时,居然出现了超时的现象,但是用其他以前的客户类型查询就没有问题,用一个 ...

  4. SQL Server用户自定义类型与统计信息

    用户自定义数据类型不支持统计信息! 所以查询对它的查询会慢一些.

  5. 用一句SQL查询相对复杂的统计报表

    --统计从2017年3月份开始每个月金融服务支付前分期申请数以及通过(核账完成)数 ,ApplyTime)) ,ApplyTime)) as varchar)+'月' as 日期,count(*) a ...

  6. 【Mysql】使用一条sql查询出库表结构信息

    1.新建查询 将以下脚本粘贴进去 脚本如下: SELECT TABLE_SCHEMA 库名, TABLE_NAME 表名, COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA ...

  7. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

  8. SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)

    本位出处:http://www.cnblogs.com/wy123/p/6770258.html 统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见 ...

  9. MS SQL 统计信息浅析上篇

    统计信息概念 统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息.数据库查询优化器使用这些统计信息来估计查询结果中的基数或行数. 通过这些基数估计,查询优化器可以生成 ...

随机推荐

  1. zoj 2229 Ride to School

    所有车子到达的总时间算出来,然后从小到大排序,如果:1. 开始时间 < 0 的,不予考虑,太快的赶不上,太慢的赶上也没用.2. 开始时间 > 0 的,Charley 和最早到达的车子一起到 ...

  2. sp_makewebtask

      Transact-SQL 参考 sp_makewebtask 创建一项生成 HTML 文档的任务,该文档包含执行过的查询返回的数据. 说明  所有 Web 作业在企业管理器的"作业分类& ...

  3. window.parent与window.opener的区别与使用

    window.parent 是iframe页面调用父页面对象 举例: a.html 如果我们需要在b.html中要对a.html中的username文本框赋值(就如很多上传功能,上传功能页在ifrma ...

  4. c++之构造函数学习

    #include<stdio.h> class Test {      private:      int i;      int j;      int k;     public :  ...

  5. 经典阅读-《Effective C++》Item1:视C++为一个联邦语言

    C++已经是个多重范型编程语言(multiparadigm programming language),一个同时支持过程形式(procedural).面向对象形式(object-oriented).泛 ...

  6. Oracle "Job定时"

    今天需要做个定时器,定时到别的库导入数据用到了Job,第一次使用记录下来,如果有第一次操作的可以借鉴一下 1.首先,使用Toad新建job,进入配置页面

  7. (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用

    上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHelper帮 助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC应用程序中.让我们来看看该类给我们带来了哪些方便的 ...

  8. Jsp、Servlet

    1 forward.redirect forward 转发是服务器行为,浏览器根本不知道服务器发送的内容是从哪儿来,所以它的地址栏中还是原来的地址. redirect 重定向是客户端行为.redire ...

  9. java面试题系列11

    华为的JAVA面试题 QUESTION NO: 1 publicclass Test1 {       publicstaticvoid changeStr(String str){         ...

  10. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...