sql 多列数据分组统计

zxp_02913 2018-04-16 04:49:58
手上有一个需求,查询某个时间段,各个测站雨量总和,根据雨量值进行级别划分,要关联到对应的测站总数,对应的测站要关联到对应的县数。个人只能查到单一列字段,多列字段分组统计,望大牛指教!

sql code:
select rg, count(2) stcd
from (select t2.*,
(case
when y < 10 then
'0~10'
when y >= 10 and y <= 24.9 then
'10~24.9'
when y >= 25 and y <= 49.9 then
'25~49.9'
when y >= 50 and y <= 99.9 then
'50~99.9'
when y >= 100 and y <= 199.9 then
'100~199.9'
when y >= 200 and y <= 299.9 then
'200~299.9'
else
TO_CHAR(y)
end) rg
from (select t1.*, d.ADDVNM, d.ADDVCD, b.STNM
from (select r.stcd, sum(r.dyp) y
from ST_PPTN_R_LOC r
where r.dyp is not null
and r.tm BETWEEN
TO_DATE('2015-05-02 12:20:12',
'yyyy/mm/dd hh24:mi:ss') AND
TO_DATE('2018-05-02 12:20:12',
'yyyy/mm/dd hh24:mi:ss')
group by r.STCD) t1,
ST_STBPRP_B_LOC b,
ST_ADDVCD_D_LOC d
where t1.stcd = b.STCD
and b.ADDVCD = d.ADDVCD) t2) t3
group by rg;

效果图:



数据表:


sql结果:


...全文
1801 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxp_02913 2018-04-17
  • 打赏
  • 举报
回复
引用 1 楼 jdsnhan 的回复:
这个效果?

with a as
(select '张三' name, '空洞' dept, 209 sal
from dual
union all
select '灭绝' name, '峨眉' dept, 253 sal
from dual
union all
select '李四' name, '空洞' dept, 271 sal
from dual
union all
select '令狐冲' name, '华山' dept, 932 sal
from dual
union all
select '岳灵珊' name, '华山' dept, 432 sal
from dual
union all
select '任盈盈' name, '华山' dept, 832 sal
from dual)
select count(distinct dept) 部门数量, count(distinct name) 人员数量, flag
from (select name,
dept,
case
when sal between 200 and 300 then
'200~300'
when sal between 301 and 500 then
'300~500'
else
'800以上'
end flag,
sal
from a)
group by flag


咋查询的结果跟你不一样呢?站数量和县数量还是一样??


数据表:
zxp_02913 2018-04-17
  • 打赏
  • 举报
回复
引用 1 楼 jdsnhan 的回复:
这个效果?

with a as
 (select '张三' name, '空洞' dept, 209 sal
    from dual
  union all
  select '灭绝' name, '峨眉' dept, 253 sal
    from dual
  union all
  select '李四' name, '空洞' dept, 271 sal
    from dual
  union all
  select '令狐冲' name, '华山' dept, 932 sal
    from dual
  union all
  select '岳灵珊' name, '华山' dept, 432 sal
    from dual
  union all
  select '任盈盈' name, '华山' dept, 832 sal
    from dual)
select count(distinct dept) 部门数量, count(distinct name) 人员数量, flag
  from (select name,
               dept,
               case
                 when sal between 200 and 300 then
                  '200~300'
                 when sal between 301 and 500 then
                  '300~500'
                 else
                  '800以上'
               end flag,
               sal
          from a)
 group by flag

能留个联系方式,请教下吗?
jdsnhan 2018-04-17
  • 打赏
  • 举报
回复
这个效果?

with a as
 (select '张三' name, '空洞' dept, 209 sal
    from dual
  union all
  select '灭绝' name, '峨眉' dept, 253 sal
    from dual
  union all
  select '李四' name, '空洞' dept, 271 sal
    from dual
  union all
  select '令狐冲' name, '华山' dept, 932 sal
    from dual
  union all
  select '岳灵珊' name, '华山' dept, 432 sal
    from dual
  union all
  select '任盈盈' name, '华山' dept, 832 sal
    from dual)
select count(distinct dept) 部门数量, count(distinct name) 人员数量, flag
  from (select name,
               dept,
               case
                 when sal between 200 and 300 then
                  '200~300'
                 when sal between 301 and 500 then
                  '300~500'
                 else
                  '800以上'
               end flag,
               sal
          from a)
 group by flag

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧