在SQL数据库中如何实现如下的统计功能

在SQL数据库中如何实现如下的统计功能,第1张

select td报考课目 as 科目,td报名时间 as 时间,sum(isnull(报名人数,0)) as 报名人数,sum(isnull(交费人数,0)) as 交费人数

from(

select 报考课目,报名时间,count() as 报名人数,0 as 交费人数

from bmb

group by 报考课目,报名时间

union all

select 报考课目,交费时间,0 as 报名人数,count() as 交费人数

from bmb

group by 报考课目,交费时间

) tb right join (select

from(select distinct 报名时间

from bmb

union

select distinct 交费时间

from bmb) ta,

(select distinct 报考课目

from bmb) tc) td on tb报考课目 = td报考课目 and tb报名时间 = td报名时间

group by td报考课目,td报名时间

order by td报考课目,td报名时间

1

统计各出版社出版图书的数量。

SELECT

出版社出版社名称,

COUNT(图书书号)

AS

出版图书的数量

FROM

图书,

出版社

WHERE

图书出版社编号

=

出版社编号

GROUP

BY

出版社出版社名称

2

列出多人合著的图书书号和价格。

SELECT

书号,

价格

FROM

图书

GROUP

BY

书号,

价格

HAVING

COUNT(作者编号)

>=

2

3

列出高教出版社出版的最贵图书信息。

SELECT

图书

FROM

图书,

出版社

WHERE

图书出版社编号

=

出版社编号

AND

出版社出版社名称

=

'高教出版社'

AND

图书价格

IN

(SELECT

MAX(价格)

FROM

图书

T

WHERE

T出版社编号

=

出版社编号)

4

列出所有图书都是30元以上的出版社名称。

SELECT

出版社出版社名称

FROM

图书,

出版社

WHERE

图书出版社编号

=

出版社编号

GROUP

BY

出版社出版社名称

HAVING

SUM

(

CASE

WHEN

图书价格

>

30

THEN

0

ELSE

1

END

)

=

0

首先:你这个表结构设计的就太不合理, 数据量大的时候查询将非常耗时耗资源。

你的问题是否可以这样理解?输入一个日期, 将改日期下A B C的数量(如果存在记录)求和输出?但是这样问题就出来了, 也就是说你只能每次查询一个日期下的数量总和, 而不能按日期来汇总数量总和, 所以说设计的结构不合理!

其次:你要的这个功能, 可以实现。

思路:

必定要用拼接语句, 动态查询出所有存在的唯一日期, 逐个日期查询A B C的数量, 求和!这样查询出来的就是按日期汇总的数量了。

不知道你是否理解?

可以通过count函数来实现。

sqlOne:select    from  tablename1 where id>5;此语句查询出来多条记录,之后看做一个新的表。

sqlTwo:select conut() from (select    from  tablename1 where id>5)  as tablename2;此语句即可查询出来统计的记录条数。

备注:以上方法通用于所有的数据统计,如果是单表查询,可以直接通过:“select count( )  from  tablename1 where id>5"的形式查询出结果。

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

DataTable dt1;//有数据的

DataTable dt2;//没数据的

//以上变量的初始化我就不写了

foreach(DataRow dr in dt1)

{

    if((Int32)dr["A"]>5 && (Int)dr["B"]>3)

    {

        dt2rowsadd(dr);

    }

}

以上就是关于在SQL数据库中如何实现如下的统计功能全部的内容,包括:在SQL数据库中如何实现如下的统计功能、数据库实验:统计查询和组合查询、SQL数据库上的select sum功能如何实现符合条件的不同列数值统计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/10189283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存