当前位置: 首页 > 面试题库 >

MySQL显示无记录的日期计数为0

赵佐
2023-03-14
问题内容

我正在尝试通过当前一周(过去7天)的列表获取所有用户尝试的COUNT次

此查询有效,但如果日期不存在,则不会返回0:

SELECT COUNT(*) AS attempt_count, 
    DATE_FORMAT(attempt_date,'%Y/%m/%d') AS attempt_date 
FROM users_attempts 
WHERE DATE_SUB(attempt_date, INTERVAL 1 DAY) > DATE_SUB(DATE(NOW()), INTERVAL 1 WEEK) 
GROUP BY DAY(attempt_date) DESC;

此查询返回每天上一个当前周的所有尝试次数COUNT,我知道了这一点(我只有1条记录):

attempt_count | attempt_date
1               2014/06/19

我想要这个结果:

attempt_count | attempt_date
1               2014/06/19
0               2014/06/18
0               2014/06/17
0               2014/06/16
0               2014/06/15
0               2014/06/14
0               2014/06/13

非常感谢

演示 :http : **//sqlfiddle.com/#!2** /
b58bb/1/0


问题答案:

好的,我从线程MySql Single
Table的
上一个答案中选择了过去7天,并包含空行

在这里,您可以做些什么来使日期选择动态化

select 
t1.attempt_date,
coalesce(SUM(t1.attempt_count+t2.attempt_count), 0) AS attempt_count
from
(
  select DATE_FORMAT(a.Date,'%Y/%m/%d') as attempt_date,
  '0' as  attempt_count
  from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
  ) a
  where a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
)t1
left join
(
  SELECT DATE_FORMAT(attempt_date,'%Y/%m/%d') AS attempt_date, 
  COUNT(*) AS attempt_count
  FROM users_attempts
  WHERE DATE_SUB(attempt_date, INTERVAL 1 DAY) > DATE_SUB(DATE(NOW()), INTERVAL 1 WEEK) 
  GROUP BY DAY(attempt_date) DESC
)t2
on t2.attempt_date = t1.attempt_date
group by DAY(t1.attempt_date)
order by t1.attempt_date desc;

演示



 类似资料:
  • 我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?librray可以改变我的日志显示方式吗?既然我有点迷路了,我该怎么调查呢?

  • 问题内容: 我陷入MySQL中的问题。我想获取两个日期时间项之间的记录数。 例如: 我的表中有一列名为“ created”的数据类型。 我想计算在“今天的4:30 AM”和“当前日期时间”之间的日期时间创建的记录。 我尝试了MySQL的一些功能,但仍然没有运气。 你能帮我吗?谢谢。 问题答案: 可能与: 或使用: 您可以根据需要更改日期时间。可以使用或获取所需的日期。

  • 本文向大家介绍在MySQL中显示从当前日期到当月剩余的记录?,包括了在MySQL中显示从当前日期到当月剩余的记录?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是MySQL中从当前日期到当月剩余时间的查询- 这将产生以下输出-

  • 我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的 想知道这是否是一个明显的错误吗?我已经连接到数据库了。 JB的

  • 问题内容: 我有一个类似于以下的模型: 我想查询数据库以获取按天分组的场所的评论总数。MySQL查询为: 在Django中完成此操作的最佳方法是什么?我可以用 并在视图中解析结果,但这对我来说似乎不对。 问题答案: 这应该可以工作(使用与你使用的相同的MySQL特定功能):

  • 问题内容: 我有这个mysql表: 等等。我可以简单地获取结果并通过以下代码按日期将其排序: 但是如何显示按特定日期排序的表中的元素,如下所示: 等等。谢谢! 问题答案: 这是PHP代码: 输出: 汤姆 麦可 2012-11-17 埃里克 约翰 2012-11-16 拉里 凯特 请注意,虽然此代码将行按一列“分组”,但可以轻松地扩展为按多列对行进行分组。留作练习。