我有一个工作表,其中每个工作都有一些指标,如成本、所用时间等。我想为一组工作选择信息,如请求者和工作操作,除了该行数据,选择一些高级指标(最低成本、最高成本、最短时间等)。
数据经常变化,所以我想在一次选择中获取这些信息。是否有可能做到这一点?我不确定这在概念上是否可行,因为数据库必须返回行级数据以及聚合数据。
现在我可以获得所有细节并计算最小值/最大值,如下所示:
select requestor, action, cost, time_taken from job;
但是我必须编写代码来找到最小/最大值,当我真的只对最小值/最大值感兴趣时,这个查询必须下载所有成本/时间数据。我真的很想做类似的事情
select (min(cost), max(cost), min(time_taken), max(time_taken)), (requestor, action) from job;
并先获取聚合数据,再获取行级数据。这可能吗?(在真正的服务器上,这是在 MySQL 上,但对于开发人员,我在本地使用 sqlite,所以如果它也在那里工作会很好,但不是必需的)。
该表如下所示:
+----+-----------+--------+------+------------+
| id | requestor | action | cost | time_taken |
+----+-----------+--------+------+------------+
| 1 | 31233 | sync | 8 | 423.3 |
+----+-----------+--------+------+------------+
| 2 | 11229 | read | 1 | 1.3 |
+----+-----------+--------+------+------------+
| 3 | 1434 | edit | 5 | 152.8 |
+----+-----------+--------+------+------------+
| 4 | 101781 | sync | 12 | 712.1 |
+----+-----------+--------+------+------------+
我想找回统计数据:
最小/最大成本:1/12
min/max time_taken: 1.3/712.1
以及所有请求者和操作:
+-----------+--------+
| requestor | action |
+-----------+--------+
| 31233 | sync |
+-----------+--------+
| 11229 | read |
+-----------+--------+
| 1434 | edit |
+-----------+--------+
| 101781 | sync |
+-----------+--------+