高分跪求一SQL查询语句,急急急
我有一个表main内容如下
date name total
2006-03-01 07:20:00 adn 20
2006-03-01 07:25:00 adf 40
2006-03-01 09:20:00 df 20
2006-03-02 07:20:00 dfsd 10
2006-03-02 05:20:00 df 2.3
2006-03-01 05:20:00 dsf 2.4
2006-03-03 07:20:00 sdf 2.64
我想统计2006-03-01到2006-03-03这三天每天的记录数怎么弄,并把每天的都汇总显示
我的查询语句为
select count(date) from main date>=2006-03-01 00:00:00 date<=2006-03-03 23:29:29 group by date
汇总出为的数据为
1
1
1
1
1
1
了可我想的是把每天的记录数分别汇总,按照我的要求应该为
4
2
1
请问该怎么写代码啊
问题点数:100、回复次数:17Top
1 楼lsqkeke(可可)回复于 2006-03-05 13:52:57 得分 100
select count(date) from main
where date>=2006-03-01 00:00:00 date<=2006-03-03 23:29:29
group by convert(varchar(10),date,120)Top
2 楼lsqkeke(可可)回复于 2006-03-05 13:58:41 得分 0
declare @t table([date] datetime,[name] varchar(20), total float)
insert @T
select '2006-03-01 07:20:00', 'adn', 20 union all
select '2006-03-01 07:25:00', 'adf', 40 union all
select '2006-03-01 09:20:00', 'df', 20 union all
select '2006-03-02 07:20:00', 'dfsd', 10 union all
select '2006-03-02 05:20:00', 'df', 2.3 union all
select '2006-03-01 05:20:00', 'dsf', 2.4 union all
select '2006-03-03 07:20:00', 'sdf', 2.64
select count(1) from @t a
where [date]>='2006-03-01 00:00:00' and [date]<='2006-03-03 23:29:29'
group by convert(varchar(10),[date],120)
结果:
4
2
1Top
3 楼xiaobifei(小菲)回复于 2006-03-05 14:00:45 得分 0
可可大哥,你能不能解释一下你写的这二条语句啊,我给你下跪了Top
4 楼yyjzsl(阿木)回复于 2006-03-05 14:12:21 得分 0
^_^,没那么严重吧?
偶也没看懂,只能帮顶下哦。Top
5 楼lsqkeke(可可)回复于 2006-03-05 14:22:44 得分 0
你不用那么客气的 :)
我后面那条才是正确的!
你把它拿到查询分析器里面运行就可以看到结果了!
此语句中主要是后面的那个group by 子句!
由于你是要求按照一天统计,就必须截取时间字符串的前面的年 月日
而不包括时分秒的时间信息。要达到这个目的,并且统一年月日时间的格式,
就用到了convert(varchar(10),date,120)这个函数。
你可以查看联机帮助得到它的用法
Top
6 楼limaowa()回复于 2006-03-05 15:18:11 得分 0
我给你点解释:
你原来的语句用group by date
自然是 把date当成主健,所以结果显示的是每一行的个数,但经过了 convert(varchar(10),[date],120)
这条转换语句之后,你的分组条件改变了,原来具体道秒的时间改变成的 具体到日的时间,即以天为标准分组,而着才是你所希望的查询条件,
明白了吗 ?
具体的 convert(varchar(10),[date],120)
语句你可以在帮助文档 里查下,搜索 convert就出来了,它在这里就是揭短了 日期长度,明白了 吗 ?
Top
7 楼limaowa()回复于 2006-03-05 15:20:18 得分 0
发的晚了
页面没有刷新
希望对你有帮助哦Top
8 楼aniude(重返荣耀)回复于 2006-03-05 16:50:41 得分 0
学习Top
9 楼filebat(Mark)回复于 2006-03-05 19:05:35 得分 0
楼主,你又发了一次哦
http://community.csdn.net/Expert/topic/4593/4593689.xml?temp=.6219599Top
10 楼flashspider(还没想好)回复于 2006-03-05 23:02:50 得分 0
第一句也对的吧,除了日期没有用'',select count(1)与 select count(date)对此题结果有什么影响吗?请教,学习中......Top
11 楼xiaoxiangqing(肖祥清)回复于 2006-03-06 08:58:36 得分 0
select convert(varchar(10),date,120),count(*) cnt from main date>='2006-03-01 00:00:00' date<='2006-03-03 23:29:29' group by convert(varchar(10),date,120)Top
12 楼xiaoxiangqing(肖祥清)回复于 2006-03-06 09:02:23 得分 0
--方法一:
select convert(varchar(10),记录日期,120)date,count(*) cnt from stock_back group by convert(varchar(10),记录日期,120)
--方法二:
select datepart(yyyy,记录日期)year,datepart(mm,记录日期)month,datepart(dd,记录日期)day,count(*) cnt from stock_back group by datepart(yyyy,记录日期),datepart(mm,记录日期),datepart(dd,记录日期)
Top
13 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-03-06 09:08:25 得分 0
思路应该是:
要统计每天的,先将日期转换成年月日不要时间的格式,再countTop
14 楼heyihua()回复于 2006-03-06 11:21:51 得分 0
select count(DATEDIFF(d, date, GETDATE()) ),DATEDIFF(d, date, GETDATE()) from main group by DATEDIFF(d, date, GETDATE()) where date>=2006-03-01 00:00:00 date<=2006-03-03 23:29:29Top
15 楼xxljd(闪)回复于 2006-03-06 11:37:11 得分 0
select day(date),count(1) from 表
where date>'2006-03-01' and date<'2006-03-04'
group by day(date)Top
16 楼xxljd(闪)回复于 2006-03-06 11:40:06 得分 0
建立测试
declare @t table([date] datetime,[name] varchar(20), total float)
insert @T
select '2006-03-01 07:20:00', 'adn', 20 union all
select '2006-03-01 07:25:00', 'adf', 40 union all
select '2006-03-01 09:20:00', 'df', 20 union all
select '2006-03-02 07:20:00', 'dfsd', 10 union all
select '2006-03-02 05:20:00', 'df', 2.3 union all
select '2006-03-01 05:20:00', 'dsf', 2.4 union all
select '2006-03-03 07:20:00', 'sdf', 2.64
执行
select day(date)as'日期',count(1) from @t
where date>'2006-03-01' and date<'2006-03-04'
group by day(date)
Top
17 楼aywrenyue(基本功修炼中……)回复于 2006-03-06 15:45:04 得分 0
学习Top




