189 8069 5689

oracle怎么分组查询,oracle按月分组查询

oracle 分组查询

创建测试表

10年专注建站、设计、互联网产品定制网站建设服务,业务涵盖品牌网站设计购物商城网站建设、小程序开发、软件系统开发、重庆APP软件开发等。凭借多年丰富的经验,我们会仔细了解每个客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联更提供一系列网站制作和网站推广的服务,以推动各中小企业全面信息数字化,并利用创新技术帮助各行业提升企业形象和运营效率。

create table test

(id int,

month int,

dept_id varchar2(10),

counts int,--由于你给的字段名是关键字,这里我稍作修改

al int);--这个字段同上

insert into test values (1,1,'市北',20,100);

insert into test values (2,1,'市南',30,100);

insert into test values (3,2,'市北',30,100);

insert into test values (4,2,'市南',40,100);

insert into test values (5,3,'市北',50,100);

insert into test values (6,3,'市南',60,100);

sql语句

select t.month,

max(decode(t.dept_id,'市北',t.persent,0)) 市北,

max(decode(t.dept_id,'市南',t.persent,0)) 市南

from

(select month,dept_id,(counts/al)*100||'%' persent from test) t

group by  t.month

结果截图

oracle查询分组问题

按照你的说法,我的理解的如果不放group by那么可能出现两行完全重复的数据,是这个意思吧。

不能放day,因为day是在这个sql中起的一个别名,只有在查询完成后day才有效果(比如在having中们就可以用),但是在group by中查询并没有完成,所以day没有用。

这个有一个办法,就是你把day前面的那一串(也就是别名day表示的那串round函数中的内容)整个放在groupby的后面。

还有一个办法不一定好用(这个方法有个前提,就是每个分组的最后day结果只有一个,而不是可能有好几个),你可以在round前面加一个max或者min,这样就是聚合函数了(也就是说不需要在groupby后面加day的那一串了),如果完全相同,那么可能只显示一个(可能,我忘了如果存在相等的最大值时,是怎么样的一个结果了,你可以试试),这样就不需要大改动,就能完成了、

oracle怎么group分组查询数据最小的一条

oracle用group分组查询数据最小的一条表中字段phonenumber,score,examtime

要取出时间段中phonenumber的score最大并且examtime最小的记录,用max和min取的值都不是正确的记录值,用排序子查询的方法可以取到数据最小的一条。

oracle数据库的分组查询的语句怎么写

看你的意思

大概这样理解

数据库表里面有编号为1和编号为2的

男女若干个

现在要分别统计

编号为1的男有多少个

女有多少个

编号为2的

男有多少个

女有多少个;如果是这样的话,首先先按编号分组

select

*

from

student

group

by

id;

然后再这个基础上要分别统计男和女

可以用到oracle特有的decode函数

select

sum(decode(sex,'男',1,0))

from

student

这样就得到了男

以此类推

整个sql语句

可以这样写

select

id

编号,sum(decode(sex,'男',1,0))

男,sum(decode(sex,'女',1,0))

from

student

group

by

id;


网站名称:oracle怎么分组查询,oracle按月分组查询
当前地址:http://cdxtjz.com/article/hshgcg.html

其他资讯