当前位置: 首页 > 知识库问答 >
问题:

使用sql[关闭]统计每天、每周和每月的总计

商焕
2023-03-14

我有一个名为-'users'的示例sql表,其中包含以下记录:

我想获得每一个用户的计数在每日,每周和每月的基础上与预期的outlike为:

共有1个答案

权浩阔
2023-03-14

您可以使用如下所示的查询:

SELECT user_id
    , SUM(IF( transaction_time > CURRENT_DATE()  - INTERVAL 1 DAY,   1, 0)) as daily_count
    , SUM(IF(transaction_time > CURRENT_DATE() - INTERVAL 1 WEEK,  1, 0)) as weekly_count
    , SUM(IF(transaction_time > CURRENT_DATE() - INTERVAL 1 MONTH, 1, 0)) as monthly_count
FROM yourTable
GROUP BY user_ID
ORDER by user_id;

样品

MariaDB [bernd]> select * from yourTable;
+----+---------+---------------------+-------+
| id | user_id | transaction_time    | price |
+----+---------+---------------------+-------+
|  1 |       1 | 2021-04-22 10:00:00 |    20 |
|  2 |       2 | 2021-04-03 20:00:00 |    10 |
|  3 |       2 | 2021-04-04 20:00:00 |    11 |
|  4 |       3 | 2021-04-05 20:00:00 |    12 |
|  5 |       1 | 2021-03-03 20:00:00 |    10 |
|  6 |       3 | 2021-01-06 20:00:00 |     9 |
+----+---------+---------------------+-------+
6 rows in set (0.01 sec)

MariaDB [bernd]> SELECT user_id
    -> , SUM(IF( transaction_time > CURRENT_DATE()  - INTERVAL 1 DAY,   1, 0)) as daily_count
    -> , SUM(IF(transaction_time > CURRENT_DATE() - INTERVAL 1 WEEK,  1, 0)) as weekly_count
    -> , SUM(IF(transaction_time > CURRENT_DATE() - INTERVAL 1 MONTH, 1, 0)) as monthly_count
    -> FROM yourTable
    -> GROUP BY user_ID
    -> ORDER by user_id;
+---------+-------------+--------------+---------------+
| user_id | daily_count | weekly_count | monthly_count |
+---------+-------------+--------------+---------------+
|       1 |           1 |            1 |             1 |
|       2 |           0 |            0 |             2 |
|       3 |           0 |            0 |             1 |
+---------+-------------+--------------+---------------+
3 rows in set (0.00 sec)

MariaDB [bernd]> 
 类似资料:
  • 问题内容: 我正在尝试为dellstore2数据库累计计算用户数。在这里和其他论坛上寻找答案时,我使用了这个 这返回 每个月是 看一下前几项,似乎总的来说还不错。但是当我跑步时 对于整个事情,我明白了 这与第一个输出11,681中的最后一项不一致。我猜上面的计算无法确定整个月的唯一性。什么是最快的计算方式(最好不使用自联接)? 问题答案: 除了直接从订单中选择之外,还可以使用如下子查询: 我认为这

  • 问题内容: 我的表格“订单”中有50行/条目。我有一列名为的列,该列用于保存在处的订单声明。 此字段中的日期格式如下:2011-10-03 07:07:33 格式为(yy / mm / dd time)。 我也有一个专栏,这是他们支付的金额。 我想显示每天的总数。 因此,对于2011年10月3日之后的6个订单,应采用6个订单的值,并将它们加在一起。 所以我可以显示: 我怎样才能做到这一点? 问题答

  • 问题内容: 我有一张桌子,如下所示: 在MySQL中,如何查询是否希望每天返回sum(count)和结果,如下所示: 问题答案: 您需要在columnName周围使用function 。 SQLFiddle演示

  • 问题内容: 我有一张表,我们称它们为桌子 我需要每月的记录并更新为table ,这是我的意思是一个示例输出: 在数据类型列IS 到目前为止,这是我尝试过的: 该查询仅在每个员工和每个月显示一次。 问题答案: 尝试以下

  • 问题内容: 由于某种原因,我对此感到困惑。 基本上,我正在寻找一个查询,该查询将查找自2010年以来每月的新客户数量。 我有客户的电子邮件地址(email),所有下达的订单(OrderID)以及下达订单的日期(OrderDate)。该表是tblOrder。 我知道“新客户”是:(a)在日期/月份 之前 从未下过订单的人,以及(b)在日期/月份 之后 至少下过一次订单的人 我希望输出最终是这样的,用

  • Python3 实例 以下代码通过导入 calendar 模块来计算每个月的天数: # Filename : test.py # author by : www.runoob.com import calendar monthRange = calendar.monthrange(2016,9) print(monthRange) 执行以上代码输出结果为: (3, 30) 输出的是一个元