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

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

把时间字段转换成年月日字符类型,然后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时间转字符串类型不一样好像,没试,换一下就好了

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然后将你要查询表的日期格式改为带星期一到日的 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没测试过,不知道对不对,只拿了所有星期几的,要某一周的在加判断 我的思路大概是这样,有错的地方欢迎讨论

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大于等于周一并且小于等于周末