sql 实现按日期分组

数据如下:
日期 金额
2008-05-21 12:15:56 10
2008-05-21 14:15:56 5
2008-05-21 15:22:56 5
2008-05-22 8:15:56 15
2008-05-22 22:15:56 7
2008-05-23 16:15:56 6
2008-05-26 16:15:56 16
.....
说明:同一天可能有多条记录,但日期并不一定连续,怎么才能实现按日期分组显示有多少记录数,如下所示:
日期 记录数
2008-05-21 3
2008-05-22 2
2008-05-23 1
2008-05-26 1
...........
或者只显示出有记录的日期就可以
这样写同一天如果有多条记录则会显示多条,我的目的是一天的记录只显示一条

需要用convert函数转换日期格式,并且需要用group by来实现分组。

1、创建测试表及插入数据:

create table test
(tdate datetime,
sal int);

insert into test values ('2015-09-23 12:22:22',100);
insert into test values ('2015-09-23 01:54:34',456);
insert into test values ('2015-09-24 14:32:35',45);
insert into test values ('2015-09-24 22:23:43',67);
insert into test values ('2015-09-25 19:43:22',234);
insert into test values ('2015-09-25 08:14:12',67);
insert into test values ('2015-09-26 04:53:34',45);
insert into test values ('2015-09-26 09:46:54',78);

2、执行sql语句:

select convert(varchar(10),tdate,120) tdate,sum(sal) sal  from test  group by convert(varchar(10),tdate,120);

3、执行结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-17
很简单呀
你使用select语句
后面加上日期就行了
select * from 表名 order by 日期 desc
第2个回答  2011-08-17
select distinct 日期 from table追问

这样写同一天如果有多条记录则会显示多条,我的目的是一天的记录只显示一条

第3个回答  2011-08-17
SELECT
Convert ( VARCHAR(10), 日期, 120) AS 日期
COUNT(*) AS 记录数
FROM

GROUP BY
Convert ( VARCHAR(10), 日期, 120)本回答被提问者采纳
第4个回答  2019-12-06
女子落魄鼓舞人心所以

sql 分组统计
首先,我们使用SQL语句`SELECT`对日期字段进行分组,格式化为'YYYY-MM-DD',同时计算每个日期的记录数,如`SELECT DATE_FORMAT(date_field, '%Y-%m-%d') AS dToday, COUNT(*) AS memberNums FROM table_name GROUP BY DATE_FORMAT(date_field, '%Y-%m-%d') ORDER BY dToday DESC`。然后,通...

Mysql一个SQL查询搞定按天分组统计,无数据自动补0展示
在前后端分离的项目中,仪表板模块通过展示的 echarts 图表,呈现了每天的前十天委托单数量,按日期分组统计。起初,感觉只需一个 SQL 查询即可轻松解决。然而,实际操作中发现,当某些日期无数据时,图表并未完整展示,例如 19 号和 20 号的数据缺失。这给前端显示带来了问题,需要在这些日期位置显示数...

SQL: 一般情况按年分组,特殊年份按指定日期分组,SELECT语句怎么写...
第二次只计算特殊年份的,这里,看你的数据,提个建议,在保存日期数据时,格式尽量是yyyy-mm-dd型的,否则就会出现你现在的情况,怎么截取5月1日以前?还得写个小算法计算。这里按你yyyy-mm-dd的格式写sql了。特殊年份 2.select substr(year,6,2),count(1) from table where (substr(year,1,...

sql 按每五分钟 分组查询
要实现SQL按每五分钟进行分组查询,可以采取以下步骤:首先,检查分钟数的最后一位,如果它减去5大于或等于0,说明是5到9分钟的区间;否则,是0到4分钟的区间。 接着,对日期进行格式化,只保留到小时(yyyy-MM-dd H)部分,这样可以确保时间粒度精确到小时和分钟。 然后,根据处理后的日期进行...

oracle 求sql语句 按照日期范围分组查询。请务必写出测试过的代码,有难...
问了你半天也不答,按startdate的时间为准了 --建表如下 create table test(startdate date,enddate date,autualdate date,"desc" varchar2(10),"value" int)--插入数据 insert into test values (to_date('2013-05-17','yyyy-mm-dd'),to_date('2013-05-17','yyyy-mm-dd'),to_date(...

Sql统计语句求解
sum(in) as 收入,sum(out ) as 支出 from (select datetime, money as in, 0 as out from cash union all select datetime, 0 as in, money as out from expend ) as p group by Convert(varchar(10),datetime,23)把两张表合并成一张表然后将时间转换成日期分组统计。采用吧。。。

sql分组统计
1. GROUP BY子句的基本功能:GROUP BY子句是SQL中用于对结果集进行分组的一个功能强大的工具。通过对指定的列进行分组,可以将数据按照这些列的值进行分类。例如,如果要按照“部门”列对员工数据进行分组,可以使用GROUP BY子句来实现。2. 计算分组统计信息:在GROUP BY子句之后,通常会结合...

SQL server 对日期每三天进行分组
,'2018-06-01')3、生成每隔3天的日期段 select min(iMD)+'-'+max(iMD) as 时间段,min(iDate) min_Date,max(iDate) max_Date from [dbo].[DateRange]('d','2018-01-01','2018-06-01') group by (id-1)\/3 4、使用上面的查询去关联带值的表,然后进行SUM即可实现 ...

oracle SQL 取出每个分组的按照日期最新一条记录,同时还显示每个分组...
--用外链接把AA表和CC表链接起来查询就可以了SELECT AA.CODE, AA.NUM, AA.PRICE, CC.DATETIME, CC.SUMNUM FROM test AA --下面的BB表查询的是根据code分组查询num求和及最大datetime,之后作为一个表CC LEFT JOIN (SELECT BB.CODE, SUM(NUM) SUMNUM,MAX(BB.DATETIME) DATETIME FROM ...

...用plsql把表格的数据按照相同年月的分组,并统计月销售量
SELECT to_char(销售日期,'YYYY-MM') 月份,SUM(数量) 每月销售量 FROM 销售明细表 GROUP BY to_char(销售日期,'YYYY-MM')

相似回答