我想用下面的Mysql表回答以下问题.

  1. 在过go 的几天里,用户在avg上活跃了多少天

  2. 我想按天显示用户平均值,

0表示用户未处于活动状态,1表示用户处于活动状态.

我还是SQL方面的新手,以下是我迄今为止try 过的.我不太确定我的答案.

SELECT u.username, COUNT(u.snapshot_date) as 'active_days', a.action
FROM actions a
JOIN  users u
    ON a.user_id = u.user_id
WHERE  NOT (a.action = 0)
GROUP BY u.username;

我的输出

username active_days action
Albert        2        1
Paul          4        1
Ronaldo       2        1
Messi         1        1

用户表

user_id username    snapshot_date
    1   Albert       2022-01-10
    2   Paul         2022-01-10
    3   Blessing     2022-01-10
    4   Ronaldo      2022-01-22
    5   Messi        2022-01-01
        

动作表

action_id action snapshot_date user_id

1            0    2022-01-10    1
2            1    2022-01-10    2
3            0    2022-01-10    3
4            1    2022-01-22    4
5            1    2022-01-01    5
6            0    2022-01-10    2
7            0    2022-01-10    1
8            0    2022-01-10    3
9            0    2022-01-22    2
10           0    2022-01-01    4
11           0    2022-01-10    2
12           1    2022-01-10    1
13           0    2022-01-10    3
14           1    2022-01-22    2
15           1    2022-01-01    4
16           1    2022-01-10    2
17           1    2022-01-10    2
18           0    2022-01-10    1
19           1    2022-01-22    1
20           0    2022-01-01    5
            

推荐答案

Average of last week

因为有7天,所以你可以用7除以计数

SELECT u.username, COUNT(u.snapshot_date) / 7 as active_days, 1 as action
FROM actions a
JOIN  users u
    ON a.user_id = u.user_id
WHERE  NOT (a.action = 0)
GROUP BY u.username, u.snapshot_date;

对于第二个问题,你可以平均行动的总和:

SELECT u.username, SUM(a.action) / 7 as action_days, 1 as action
FROM actions a
JOIN  users u
    ON a.user_id = u.user_id
WHERE  NOT (a.action = 0)
GROUP BY u.username, u.snapshot_date;

Mysql相关问答推荐

对象NotExecutabletry 在远程SQL服务器上执行SQL时出错,并使用SQLAchemy.Create_engine

默认情况下,MariaDB是否限制为本地主机?

版本升级到5.0.0后在QueryDSL中使用Enum时出错

MySQL中如何对字符串进行算术运算?

从表中动态删除所有空列

发生的原因及解决方法

如何进行查询以在两个不同的列中搜索两个不同的数据字符串?

是否可以使用以EXPLAIN EXTENDED ...开头的 SQL 语句修改数据?

排序子查询结果并返回每个 ID 的第一行

MySql SELECT 查找包含数字的区间的时间复杂度是多少?

一次更新mysql中的多个列

如何获取从开始时间到结束时间的所有正在运行的作业(job)的总和?

更新和替换未加引号的 JSON 字符串

结果差异(MySQL 5.7 vs MySQL 8.0)

SQL UPDATE中的str_replace?

MySQL PHP - Select WHERE id = array()?

如何将 MySQL 5.7 更新到新的 MySQL 8.0?

基于字符串动态创建 PHP 对象

Doctrine2 迁移向下迁移并从浏览器而不是命令行迁移

MySQL - 基于同一表中的行求和列值