mysql中按照日期分组查询数量

mysql中按照日期分组查询数量,第1张

SELECT DATE_FORMAT(time,'%Y-%m-%d') as day, sum(case when amount>0 then amount when amount=0 then 0 end) as amount1

from table where time>='2014-11-01' group by day

我没有测试。time表示日期,amount表示数量。查询11月后每天成交数量

用 DATE_FORMAT 函数就可以了.

格式化以后的结果里面, 仅仅包含 年月日时 这4个部分即可.

然后就可以 Group By 了。

下面是 DATE_FORMAT 函数的例子与说明。

mysql>SELECT

-> DATE_FORMAT(NOW(), '%Y~%m~%d %k.%i.%s' ) A

+---------------------+

| A |

+---------------------+

| 2010~10~22 20.55.09 |

+---------------------+

1 row in set (0.00 sec)

%W 星期名字(Sunday……Saturday)

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

%Y 年, 数字, 4 位

%y 年, 数字, 2 位

%a 缩写的星期名字(Sun……Sat)

%d 月份中的天数, 数字(00……31)

%e 月份中的天数, 数字(0……31)

%m 月, 数字(01……12)

%c 月, 数字(1……12)

%b 缩写的月份名字(Jan……Dec)

%j 一年中的天数(001……366)

%H 小时(00……23)

%k 小时(0……23)

%h 小时(01……12)

%I 小时(01……12)

%l 小时(1……12)

%i 分钟, 数字(00……59)

%r 时间,12 小时(hh:mm:ss [AP]M)

%T 时间,24 小时(hh:mm:ss)

%S 秒(00……59)

%s 秒(00……59)

%p AM或PM

%w 一个星期中的天数(0=Sunday ……6=Saturday )

%U 星期(0……52), 这里星期天是星期的第一天

%u 星期(0……52), 这里星期一是星期的第一天

%% 一个文字“%”。

所有的其他字符不做解释被复制到结果中。

以下内容解决你的问题2,即详细查询7号

思路:

创建小时表(hours),将日期为7号的数据列表和小时表做内联,接着通过对小时和状态的分组,得出指定小时指定状态的记录数

重点使用了MSSql中的函数DATEPART(HH,[字段名]),获得日期的小时数

以下是得到图中结果的Sql语句

SELECT hour, state, COUNT(1) record_num FROM Record INNER JOIN hours ON DATEPART(HH,visittime) = hour GROUP BY hour , state

结果已经很清楚,17-18点,state=1有2条记录,state=3有1条记录

这样你在前台只需通过时间和状态这2个条件来查询上面得到的结果集就可以得到想要的记录数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7490596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存