如何选择多个用户ID和几天的每天的最后一个时间戳读数?

内利斯

我有一个数据库,其中包含用户ID,消耗的卡路里(值)和记录这些卡路里消耗的时间戳记(reading_date)。一个人当天可能有多个卡路里读数,但是我只对最后一个读数感兴趣,因为它是当天所有以前读数的总和。

在:

SELECT 
  DISTINCT ON (date, user_contents.content_id)
  date_trunc('day',reading_date + time '05:00') date,
   user_id,
   created_at,
   value
FROM data

出:

date                | user_id |  created_at            | value
2019-01-13 00:00:00 | 138     | 2019-01-18 06:07:52    | 81.0
2019-01-15 00:00:00 | 137     | 2019-01-15 15:43:25    | 87.0
2019-01-16T00:00:00 | 137     | 2019-01-18 04:22:11    | 143.0
2019-01-16T00:00:00 | 137     | 2019-01-18 06:12:11    | 230.0
additional values omitted

我希望能够选择每人每天的最大阅读值。我试过使用DISTINCT语句,例如:

SELECT
DISTINCT ON (date, user_contents.content_id)
  date_trunc('day',reading_date + time '05:00') date,

有时会导致错误消息:

SELECT DISTINCT ON expressions must match initial ORDER BY expressions

有时它会滤除一些结果,但并不总是给我当天的最后一次阅读,也不是每天每人只给我一个结果。

我的最佳最终结果将如下所示(第三条记录已被删除):

date                | user_id |  created_at            | value
2019-01-13 00:00:00 | 138     | 2019-01-18 06:07:52    | 81.0
2019-01-15 00:00:00 | 137     | 2019-01-15 15:43:25    | 87.0
2019-01-16T00:00:00 | 137     | 2019-01-18 06:12:11    | 230.0
additional values omitted

最终,我将使用此数据来汇总value列,并确定数据集中每个人在一段时间内燃烧的卡路里总数。

戈登·利诺夫

您似乎正在使用Postgres。

请按照错误消息中的说明进行操作。您想要这样的东西:

SELECT DISTINCT ON (user_id, reading_date::date)
       date_trunc('day',reading_date + time '05:00') date,
       user_id, created_at,value
FROM data
ORDER BY user_id, reading_date::date DESC, reading_date DESC

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择部分的第一个和最后一个时间戳

从数组数组中查找每天的第一个和最后一个时间戳

选择每个日期的最后一个时间戳

为表上的每个组选择最后一个时间戳(记录)

为每个字段选择最后一个时间戳值的字段

按顺序返回每个ID的第一个和最后一个时间戳,并可能包含重复值和缺失值

如何从sqlite表中获取最后一个时间戳日期

选择唯一的外键行和上一个时间戳

如何通过不同的列选择上一个时间戳?

每天选择第一个和最后一个事件用户user

从表中删除重复的行,除了每天的第一个时间戳

如何在几天,几小时,几周和几个月之后迭代一个时间跨度?

如何在 Oracle 中从另一个时间戳中减去一个时间戳

如何在时间戳数组中有效地找到每天/每周/每月的第一个时间戳?

Posgres:按 ::timestamp asc 和 jsonb 列的降序排序给出相同的结果,如何按最后一个时间戳排序

选择几天之内每天记录在表中的最后一个条目

如何获得第一个和最后一个时间顺序之间的差异?

只保留特定日期的最后一个时间戳python

熊猫-合并几乎重复的行以过滤最后一个时间戳

按某一列将数据帧压缩为包含第一个和最后一个时间戳以及值均值的行

如何选择最后一个小时和分组时间?

如何安排Windows任务在一个时间范围内每天重复?

根据一个时间戳选择前5条推文

将不同时间戳格式的多个数据帧堆叠成一个时间戳

Django-每个外键ID(MySQL)获得一个时间戳

如何从python中的时间列中删除一个时间点到另一个时间点的时间戳

如何比较两个时间戳以查看一个时间戳是否晚了超过特定的分钟数?

自行加入下一个时间戳

如何删除行,当时间戳与另一个时间戳完全一样