SQL多表分组查询

SQL多表分组查询,第1张

select aoffsnumber,

aoffsname,

aoffsspec,

boffsamount,

bsubcodeinput,

boffsprice,

boffsbuytime,

coffsamount

from OfficeSupply a

left join OfficeSupperIn b on (aoffsnumber=boffsnumber)

left join OfficeSupplyStockpile c on (boffsnumber=coffsnumber)

select aport,bport from a full join b on aport=bport

使用全连接可以将a,b表中不管有没有的值都对应上,然后取出来显示。且a和b中的port值是分开列的。

你的表述我没看得太清, “根据type类型的不同” 统计是否忽略了city_id

最好 举个例子说明一下期望的算法

我根据你的表述,猜测你这里包含两层分组业务,

第一,根据city_id进行分组, 后用分组结果进行比较再次统计

如果你是10g或以上,可以试试以下语句

with grp1 as ( select sum(ws_succ)ssucc, sum(ws_stat) sstat ,city_id ,type

from tab_open_success_ratio

where ws_stat>0

group by city_id ,type)

select sum(ssucc)10000/sum(sstat),sum(sstat),type

from grp1

group by type

看你的意思

大概这样理解

数据库表里面有编号为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;

select sID,name,time from (

select tb1sID,tb2tID,tb3name,tb3time

,row_number() over (partition by tb1sID order by tb3time desc) seq

from tb1 a

inner join tb2 b on asID=bsID

inner join tb3 c on btID=ctID

) t where seq=1

用户和授权要用DBA

最简单得建用户:

create user 用户名 identified by 密码

用户解锁 alter user 用户名 account unlock(不解锁无法登陆)

授权用 grant

建完用户首先要授权登陆权限

grant create session to 用户名

授权可以授权给角色和用户

也可以把角色授权给角色和用户

其他得类似 创建表得权限类似如下格式:

grant create table to 用户

以上就是关于SQL多表分组查询全部的内容,包括:SQL多表分组查询、数据库:查询2个表,然后2个表中都有相同的port、time字段,然后查询的时候,需要根据port分组。、数据库进行SQL分组查询后再过滤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存