有一个机器表
cityid machineID,statusID。现在要出来一个按照城市名排列的各地有效机器数量,总数量 和比例的表。第一部分算总的可以select count(machineID),cityID from machineTable groupBy cityid orderby cityid算有效的(statusid=1 代表有效)可以select count(machineID),cityID from machineTable where statudid =1 groupBy cityid orderby cityid如何在一个sql中得出
cityid,总机器数,有效机器数,有效机器/总机器数
cityid machineID,statusID。现在要出来一个按照城市名排列的各地有效机器数量,总数量 和比例的表。第一部分算总的可以select count(machineID),cityID from machineTable groupBy cityid orderby cityid算有效的(statusid=1 代表有效)可以select count(machineID),cityID from machineTable where statudid =1 groupBy cityid orderby cityid如何在一个sql中得出
cityid,总机器数,有效机器数,有效机器/总机器数
解决方案 »
- 求一条查询语句 郁闷中...
- 求一个复杂的sql语句,要求见内
- 关于oralce 过程调用子过程
- 菜鸟级别学Oracel
- SQL语句统计花费8分钟?
- 重装机器,保留oracle数据,怎么用exp和imp
- PL/SQL登录问题在线急等。。。。。
- 高分请教,如何将Oracle DMP文件导入到SQL Server数据库?
- 在线求救:一套数据库系统建立两个数据库问题。(其中一个数据库看不到)
- 在动态SQL中,直接用‘||’构造动态SQL字符串的效率高还是使用BIND_VARIABLE的方法效率高?为什么?
- 大侠们帮我优化一下SQL ORACLE 速度太慢 要40多秒
- oracle record的用法
sum(decode(statusid,1,1,0)) s1,
c1/s1 from machineTable
groupBy cityid orderby cityid
with machineTable
as
(
select '北京' cityid, 1 as statusid,'AAA' as machineID from dual
union
select '北京' , 0 ,'BBB' from dual
union
select '北京' , 0 ,'CCC' from dual
union
select '广州' , 1 ,'DDD' from dual
union
select '上海' , 0 ,'EEE' from dual
)
select mar.*
,decode(a,'0','0',decode(b,'0','0',100*ROUND(b/a,4)||'%'))as c
from
(
select distinct cityid
,sum(case when 1=1 then 1 else 0 end) over(partition by cityid) a
,sum(case when 1=1 and statusid=1 then 1 else 0 end) over(partition by cityid) b
from machineTable
) mar
--执行结果
1 广州 1 1 100%
2 上海 1 0 0
3 北京 3 1 33.33%