我有一个数据库,其中有一列我想查询它在一段时间内更改的次数。例如,我有用户名、用户级别和日期。如何查询此数据库以查看用户级别在 x 年内更改的次数?
(我查看了有关 stackoverflow 的其他帖子,他们告诉我使用触发器。但在我的情况下,我想查询数据库以了解已进行的更改数量。如果我的问题无法回答,请告诉我我可能需要查看哪些其他列来解决这个问题。我应该为此使用 Lag 吗?)
我有一个数据库,其中有一列我想查询它在一段时间内更改的次数。例如,我有用户名、用户级别和日期。如何查询此数据库以查看用户级别在 x 年内更改的次数?
(我查看了有关 stackoverflow 的其他帖子,他们告诉我使用触发器。但在我的情况下,我想查询数据库以了解已进行的更改数量。如果我的问题无法回答,请告诉我我可能需要查看哪些其他列来解决这个问题。我应该为此使用 Lag 吗?)
数据库本身不会为您捕获此信息。两个建议是将您的数据存储为时间序列,而不是更新值,而是将新行添加到表中作为新的当前值并使旧值过期。另一种选择是添加一个新列来跟踪您关心的列的更新次数。这可以在代码或触发器中完成。
你听说过LOG这个词吗?您必须创建一个新表,在其中存储您想要的更改。我可以想象这个表的解决方案:
知道这一点,你可以计算一切
如果您已经通过添加新行来跟踪关卡历史记录,level
并且date
每次用户更改时都不同level
:
SELECT username, COUNT(date) - 1 AS changes
FROM table_name
WHERE date >= '2011-01-01'
GROUP BY username
这将为您提供自 2011 年 1 月 1 日以来的更改次数。请注意,我1
从COUNT
. 那是因为在您的表中有一行的用户从未更改过级别,该行代表用户的初始级别。