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

如何查询以获取最近7天的总计?

富凯风
2023-03-14
问题内容

我正在使用SQL Server 2008。

我想编写一个查询,该查询可以让我在给定的几天内进行全部活动。具体来说,我想计算过去7天每天的总票数。

我的桌子看起来像这样:

 VoteID --- VoteDate --------------  Vote --- BikeID

 1          2012-01-01 08:24:25      1        1234 
 2          2012-01-01 08:24:25      0        5678
 3          2012-01-02 08:24:25      1        1289
 4          2012-01-03 08:24:25      0        1234
 5          2012-01-04 08:24:25      1        5645
 6          2012-01-05 08:24:25      0        1213
 7          2012-01-06 08:24:25      1        1234
 8          2012-01-07 08:24:25      0        1125

我需要我的结果看起来像这样

VoteDate ---- Total
2012-01-01    5
2012-01-02    6
2012-01-03    7
2012-01-04    1
2012-01-05    3

我的想法是我必须做这样的事情:

SELECT    SUM(CASE WHEN Vote = 1 THEN 1 ELSE 0 END) AS Total
FROM      Votes
GROUP BY  VoteDate

该查询不起作用,因为它仅计算(几乎完全相同)同时发生的选票。当然,我只想看特定的一天。我如何做到这一点?


问题答案:

将其投射为date

SELECT    
     cast(VoteDate as date) as VoteDate, 
     SUM(CASE WHEN Vote = 1 THEN 1 ELSE 0 END) AS Total
FROM      Votes
WHERE VoteDate between dateadd(day, -7, GETDATE()) and GETDATE()
GROUP BY  cast(VoteDate as date)

您的VoteDate专栏是datetime,但您只需要其中的date一部分。最简单的方法是将其强制转换为date类型。您可以在此处阅读有关SQL Server日期类型的更多信息。

而且,如果您的Vote列是1或0,则可以执行sum(vote) as Total而不是执行该case语句。



 类似资料:
  • 我有我的发电机数据库表如下: HashKey(日期)、RangeKey(时间戳) DB存储每天的数据(哈希键)和时间戳(范围键)。 现在我想查询过去7天的数据。我可以在一次查询中做到这一点吗?还是我需要每天调用dbb 7次?数据的顺序并不重要因此,有人可以建议一个有效的查询来做到这一点。

  • 问题内容: 我在这里阅读了一些帖子,似乎没什么特别的,但是我仍然不能选择最后几天的条目。 如果我在今天和过去7天之间添加,则我的代码将不会输出任何内容。 问题答案: 该子句放错了位置,它必须遵循表引用和JOIN操作。 像这样: 编辑 (三三年后) 上面的内容基本上回答了以下问题:“我试图在查询中添加WHERE子句,但现在查询返回错误,我该如何解决?” 关于写一个检查“过去7天”日期范围的条件的问题

  • 本文向大家介绍mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,包括了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句的使用技巧和注意事项,需要的朋友参考一下 mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添

  • 问题内容: 我有以下架构。 表票 在这里,我想获取最近7天中每天的每种援助的计数,在没有任何援助票的日期为“ 0”。时间戳是unix时间戳。 任何帮助都将受到高度赞赏。 问题答案: MySQL没有递归功能,因此您可以使用NUMBERS表技巧- 创建仅包含递增数字的表-使用auto_increment可以轻松做到: CREATE TABLE . ( int(10) unsigned NOT NULL

  • 我出售的是实体产品,我每天都将它们当前的库存水平保存在MySQL数据库中。 现在,我想建立一个查询,选择最近的日期,其中库存水平高于30,并且所有之前6天的库存水平高于30。 作为一个例子,请查看下面的截图。 附说明的表格截图 如何才能做到这一点呢? 向丹尼致意

  • 问题内容: 从PDO手册中: PDOStatement :: rowCount()返回 受相应PDOStatement对象执行的最后一个 DELETE,INSERT或UPDATE* 语句影响 的行数 。 * 如果关联的PDOStatement执行的最后一条SQL语句是 SELECT 语句,则 某些数据库可能返回该 语句 返回的行数 。但是, 并非对于所有数据库 都可以 保证 此行为 , 并且便携式