当前位置: 代码迷 >> Oracle开发 >> 求大神帮忙,求SQL语句解决方案
  详细解决方案

求大神帮忙,求SQL语句解决方案

热度:71   发布时间:2016-04-24 06:50:05.0
求大神帮忙,求SQL语句
id   company      time     
01    公司1      2013-1-1
02    公司2      2013-1-2
03    公司3      2013-1-3
04    公司2      2013-1-4
05    公司3      2013-1-5
06    公司3      2013-1-6
07    公司2      2013-1-7
08    公司3      2013-1-8
09    公司1      2013-1-9
10    公司3      2013-1-9
11    公司1      2013-1-10
12    公司3      2013-1-11
13    公司2      2013-1-12
14    公司1      2013-1-13

现在我想知道 每间公司每周有多少条记录,请各位大神帮忙一下

------解决方案--------------------

SELECT COUNT(1),to_char(time,'IW'),company FROM TABLE
GROUP BY company, to_char(time,'IW')
ORDER BY to_char(time,'IW')

------解决方案--------------------
SELECT a.company, sum(1) zs,a.iw_start, a.iw_end
          FROM (select company,trunc(time, 'd') iw_start, (trunc(time, 'd')+6) iw_end,fdate from table_name order by time) a
         GROUP BY a.company,a.iw_start,a.iw_end
         ORDER BY a.iw_start,a.company


周日是一周的第一天,不知道这样行不行
------解决方案--------------------
SELECT a.company, sum(1) zs,a.iw_start, a.iw_end
          FROM (select company,trunc(time, 'd') iw_start, (trunc(time, 'd')+6) iw_end,time from table_name order by time) a
         GROUP BY a.company,a.iw_start,a.iw_end
         ORDER BY a.iw_start,a.company

------解决方案--------------------
SELECT company, zs, min_date, max_date
  FROM (select b.iw_start, min(time) min_date, max(time) max_date
          from (select company, trunc(time, 'd') iw_start, time
                  from table_name) b
         group by b.iw_start) a,
       (select c.company, sum(1) zs, c.iw_start
          from (select company, trunc(time, 'd') iw_start, time
                  from table_name) c
         group by c.company, c.iw_start) d
 where a.iw_start(+) = d.iw_start
 order by d.iw_start, d.company
 --MIN_DATE 是某一周中,数据库数据里的最小时间;
 --MAX_DATE 是某一周中,数据库数据里的最大时间;
 -- iw_start 某一日期所在周的第一天

写了好几种了 不知道你要的是哪一个
  相关解决方案