动态统计每个日期过去30天的数据

今天有数据分析问我,如何动态统计过去30的数?比如0601,计算0502——0601的用户数去重,0602,计算0503——0602内的用户数去重,是个动态的30天用户数

他用的spark line。具体的语法的不熟悉,但是逻辑类似,利用循环控制传入的值即可

这里利用oracle的存储过程实现

create or replace procedure test2 is
v_date date;
begin
  v_date := trunc(sysdate - 365);
while v_date<=sysdate loop
   insert into t4 select count(distinct id),v_date from t3 where day_date>=trunc(v_date-30) and day_date<=v_date;
   commit;
   v_date := v_date+1;
   end loop;
   end;


这样即可实现,每一天统计从当天到当天往前30天的数据。

### 查询 MySQL 中 30 前的数据 为了查询 MySQL 数据库中 30 前的数据,可以利用 SQL 的日期函数来实现。假设有一个名为 `test` 的表,其中有一列 `started_at` 存储时间戳值,则可以通过以下方法筛选出早于当前时间 30 数据。 #### 使用 DATE_SUB 函数 以下是具体的 SQL 查询语句: ```sql SELECT * FROM test WHERE started_at < DATE_SUB(CURDATE(), INTERVAL 30 DAY); ``` 上述查询会返回 `started_at` 列中小于当前日期减去 30 的所有记录[^1]。 如果需要更精确的时间比较(例如考虑小时、分钟),则可以用 NOW() 替代 CURDATE(): ```sql SELECT * FROM test WHERE started_at < DATE_SUB(NOW(), INTERVAL 30 DAY); ``` 此查询能够更加精准地处理带有时间部分的字段。 #### 表存储空间统计 对于了解每张表所占存储空间的情况,可执行如下命令: ```sql SELECT table_schema AS `Database`, table_name AS `Table`, CONCAT(ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2),' G') `Size` FROM information_schema.tables WHERE table_schema='your_database_name' ORDER BY (data_length + index_length) DESC; ``` 只需替换 `'your_database_name'` 为实际使用的数据库名称即可获得相应结果[^3]。 #### 升级注意事项 当涉及 MySQL 版本升级时需要注意不同版本间可能存在的兼容性问题以及新特性支持情况。通常有两种主要方式进行 MySQL 升级操作——原地升级与逻辑备份恢复法[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值