一句SQL一次访问数据库查询出一周时间的每天的数据count数 5C

oracle大神们,一句SQL一次访问数据库怎么查询出一周时间,每天的数据count数,我想了半天也就循环访问数据库7次,分别查询出来,这样效率有点低

5个回答

把时间字段转换成年月日字符类型,然后group by就好了,mysql上面的select count(c.ID),DATE_FORMAT(c.LastUpdateTime, '%Y-%m-%d') as time from cloud_carparktransactiondata as c
GROUP BY time,sqlserver时间转字符串类型不一样好像,没试,换一下就好了

qq_20458895
qq_20458895 Oracle和SQLserver、mysql的语法大致都相同,可能有一些系统函数不一样,就像这个时间转换字符串的函数在oracle中用to_char,但是语法是一样的,先把表中那个时间字段转换成只有年月日的字段,然后group by转换后的字段就可以了,我给你的那个SQL语句只要把表和字段名换下,转换函数换成oracle的就可以了,你要的是每天的数据,和秒没关系
接近 3 年之前 回复
qq_38494537
chenjiexixi 大哥,我问的oracle,还有group by 什么?每天有很多数据,都有具体到每一秒的时间记录
接近 3 年之前 回复

select to_char(t1_date,'YYYY-MM-DD'),count(*) from t1 group by to_char(t1_date,'YYYY-MM-DD'); 这是所有天数的count()。要是只要7天的可以
这样改 select * from (select to_char(t1_date,'YYYY-MM-DD'),count(*) from t1 group by to_char(t1_date,'YYYY-MM-DD')) where rownum <=7;按时间排序的话可以再把日期转回时间格式排序,最终是这样select * from (select to_char(t1_date,'YYYY-MM-DD') dd,count(*) from t1 group by to_char(t1_date,'YYYY-MM-DD')) where rownum <=3 order by to_date(dd,'YYYY-MM-DD') desc;

如果知道具体的某周的话,select trunc(sysdate, 'd') + 1 from dual;--(星期天)返回当前星期的第一天+1 为 星期一

SELECT TO_CHAR((trunc(to_date('2017-07-17','yyyy-mm-dd'), 'd') +1) + ROWNUM - 1, 'yyyy-MM-dd') as time_date
FROM DUAL
CONNECT BY ROWNUM <= 7 ;--查询出的是一周里每天的天数,进行left join 你要的表,关联条件是 日期(yyyy-mm-dd) -- on trunc(t1.createTime)= trunc(time_date)

trunc(to_date('2017-07-17','yyyy-mm-dd'), 'd') +1 -- 传入得日期可以为周一-周六,但不要为周日,

1、获取输入日期的周一和周末,格式化
2、select DATE_FORMAT(a.create_date,'%Y-%m-%d') weeks,count(a.id), a.* from xx_member a group by weeks;

3、加上where条件 create_date大于等于周一并且小于等于周末

1.新创建一张临时表 只有一列,添加数据星期一到星期日,
2然后将你要查询表的日期格式改为带星期一到日的 oracle工具 首选项 日期里面能调,
3然后查找截取字符匹配,将临时表与查询结果左连接一下,可以得到周一到周日的结果集
4如果要查询的是某一周的,还要在加对日期的判断
临时表A 属性p 查询表 B 日期 d
select p,d from
(select p from A) t
left join
{
select substr(to_char(d),10,13) as a1 ,count(*) as count //10,13日期格式中星期几的位置
from B group by substr(to_char(d),10,13)
} c
on t.p=c.a1

上面的SQL没测试过,不知道对不对,只拿了所有星期几的,要某一周的在加判断 我的思路大概是这样,有错的地方欢迎讨论

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问