【发布时间】:2026-02-09 05:50:01
【问题描述】:
在我的应用程序中,我将打开的文件记录在下表中:
TESTID SITE LATEST_READ READ_COUNT FILE_ORIGIN_ID
------------- ---------- ----------- ---------- --------------
File1 |Site1 |02/05/13 | 2| 1
File1 |Site2 |22/01/14 | 3| 2
File2 |Site1 |02/06/14 | 8| 0
File3 |Site1 |19/09/14 | 17| 0
File4 |Site2 |19/09/14 | 14| 2
File4 |Site2 |19/09/14 | 34| 1
File4 |Site3 |19/09/14 | 10| 0
File5 |Site2 |19/09/14 | 44| 2
File5 |Site3 |19/09/14 | 1| 2
如果文件的至少一个FILE_ORIGIN_ID 与2 不同,我想获得每个文件的读取计数总和。
这个例子应该给出:
TESTID SITE LATEST_READ SUM FILE_ORIGIN_ID
------------- ---------- ----------- ---------- --------------
File1 |Site1 |02/05/13 | 5| 1
File2 |Site1 |02/06/14 | 8| 0
File3 |Site1 |19/09/14 | 17| 0
File4 |Site2 |19/09/14 | 58| X <-- can be 0 or 1
File5 |Site2 |19/09/14 | 44| 2
File5 |Site3 |19/09/14 | 1| 2
我尝试了以下方法:
SELECT TESTID, SUM(READ_COUNT), LATEST_READ, FILE_ORIGIN_ID, site
FROM FILE_USAGE_LOG
GROUP BY TESTID, TESTID, LATEST_READ,
CASE
WHEN FILE_ORIGIN_ID <> '2' Then 1
ELSE 0
END, site
ORDER BY TESTID;
但它并没有做我想做的事......我该如何改进呢?如果是分组行,我该如何将FILE_ORIGIN_ID 设置为 0 或 1
【问题讨论】:
-
为什么file1的行合并了file5的行不合并?
-
@GordonLinoff 因为
File5的FILE_ORIGIN_ID没有一个与2 不同 -
这对我来说太混乱了......在派生表中执行 FILE_ORIGIN_ID CASE,然后 GROUP BY 它的结果。
-
我认为文件5的
SUM应该是44而不是58。 -
@Thomas 您需要所有字段吗?我可以只用 testid 和 read_count 的总和得到所需的结果,除非你可以给我一个聚合函数以用于其他函数(如 max、min 等......)