php - 获取特定时间范围和特定条目类型的平均值

标签 php mysql

我有一个这样的表:

ID | Type | Value | Timestamp
--------------------------------
 1  | AAA  | 0.5   | day 1 hour 1
 2  | BBB  | 1.5   | day 1 hour 1
 3  | CCC  | 1.8   | day 1 hour 1
.....
11  | AAA  | 0.6   | day 1 hour 2
12  | BBB  | 1.4   | day 1 hour 2
13  | CCC  | 1.5   | day 1 hour 2
.....


ID := Int, PK, AI, and so on
Type := String/Varchar
Value := Double
Timestamp := Unix Timestamp (Int), could be easily changed to date type

我现在想要的是特定时间范围的平均值。例如:

我想要所有 AAA 和所有 BBB 在第 1 天到第 3 天的平均值为“值”。 几天内,每种类型每天都有 24 个条目。

预期结果是

Type | Average | Timestamp/Date
-------------------------------
AAA  | 0.5242  | Day 1
AAA  | 0.5442  | Day 2
AAA  | 0.5913  | Day 3
BBB  | 1.4228  | Day 1
BBB  | 1.6924  | Day 2
BBB  | 1.3018  | Day 3

我不确定这是否可以仅使用 mysql 实现。也许用 PHP 来做会更有效率?

最佳答案

这会产生您需要的结果吗?

# DROP TABLE IF EXISTS likeThis;

CREATE TABLE likeThis (id INT UNSIGNED, `type` CHAR(255), `value` DECIMAL(2,1), `timestamp` CHAR(255));

INSERT INTO likeThis VALUES
    (1, 'AAA', 0.5, 'day 1 hour 1'),
    (2, 'BBB', 1.5, 'day 1 hour 1'),
    (3, 'CCC', 1.8, 'day 1 hour 1'),
    (11, 'AAA', 0.6, 'day 1 hour 2'),
    (12, 'BBB', 1.4, 'day 1 hour 2'),
    (13, 'CCC', 1.5, 'day 1 hour 2');

SELECT * FROM likeThis;

SELECT type, AVG(`value`) average, LEFT(`timestamp`, INSTR(`timestamp`, 'hour') - 2) timestampDate FROM likeThis GROUP BY `type`, LEFT(`timestamp`, INSTR(`timestamp`, 'hour') - 2);

如果没有请告诉我

关于如何在日期存储在不同字段类型中时调整查询,以下是一些示例查询:

# How to aggregate by day on a DATETIME field type timestamp
SELECT type, AVG(`value`) average, DATE_FORMAT(`timestamp`, '%Y%m%d') timestampDate FROM likeThis GROUP BY `type`, DATE_FORMAT(`timestamp`, '%Y%m%d');

# How to aggregate by day on a unix timestamp (stored as INT) field type timestamp
SELECT type, AVG(`value`) average, `timestamp` - `timestamp` % 86400 timestampDate FROM likeThis GROUP BY `type`, `timestamp` - `timestamp` % 86400;

谢谢

詹姆斯

关于php - 获取特定时间范围和特定条目类型的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45749670/

相关文章:

php - 创建顺序文档编辑系统的最佳方法(一次只有一个人可以编辑文档)

PHP XML如何输出漂亮的格式

php - 指定的交易货币必须与之前指定的相同

php - 如何使用 xampp 在 OSX 上正确设置 php_gmp

php - 带有外键数据的 laravel json 输出

没有foreach循环的bindParam中的php pdo绑定(bind)数组参数

PHP $_SESSION 数据返回空

php - 找不到 Laravel 命名空间类

mysql - SQL 通过带有 where 或子句的连接表进行选择

mysql - Excel VBA 连接到远程 MySQL 时的错误处理