我有一个复杂的查询来运行Sqlite。请考虑下表。在Sqlite上的查询只能为每个用户分组三个最近的记录
我将需要三个最近的记录为每个用户ID和BatchID和状态的总和。我还需要计算每个结果的记录数。
例如,假设用户ID U6TH16003只有1条记录,则记录数将为1.用户U6TH15001有7条记录,只有3条最近的记录会被考虑,并且状态字段会被添加到3条最近的记录中用户这给2和审议了状态字段的总和记录总数为3
Date UserID Status
2016-11-14 U6TH16001 0
2016-11-17 U6TH16001 0
2016-11-07 U6TH16001 1
2016-11-01 U6TH16001 0
2016-10-20 U6TH16002 1
2016-10-15 U6TH16002 1
2016-10-10 U6TH16002 1
2016-11-14 U6TH16003 1
2016-11-17 U6TH15001 1
2016-11-14 U6TH15001 0
2016-11-07 U6TH15001 1
2016-11-01 U6TH15001 0
2016-10-28 U6TH15001 1
2016-10-23 U6TH15001 1
2016-10-15 U6TH15001 1
,我需要对上表的输出是如下:
UserID Sum(Status) NumberOfRecords
U6TH16001 1 3
U6TH16002 3 3
U6TH16003 1 1
U6TH15001 2 3
谢谢你你的帮助。
这需要某种行号的功能,不幸的是SQLite没有内置。 –
我已经尝试过类似这样的事情了:从用户组表单中选择UserID,SUM(Att_status))。它将所有记录都归还给我,有没有办法只考虑最多的三个? – Lovelesh
您尝试的问题是“LIMIT”将应用于整个查询。但是你想要将它应用到每个组。其他RDBMS具有行号功能,可用于保留每组的前3行。在SQLite中,你将不得不以某种方式模拟这种行为。 –