有一个包含列的表(在 SQLITE DB 中):
CREATE TABLE TEST_TABLE(TC_ID INTEGER NOT NULL, CONF_ID INTEGER NOT NULL, SAMPNAME TEXT NOT NULL, SAMPSIZE INTEGER NOT NULL, PRIMARY KEY(TC_ID, CONF_ID, SAMPNAME) );
需要能够计算任何给定 TC_ID(即按 TC_ID 分组)的所有唯一(DISTINCT)SAMPNAME 条目,以及每个 TC_ID 的这些唯一 SAMPNAME 条目的 SAMPSIZE 总和。
注意:每个唯一的 SAMPNAME 对表中的所有行都具有相同的 SAMPSIZE。
试过:
select count(distinct SAMPNAME), sum(SAMPSIZE), TC_ID from TEST_TABLE group by TC_ID
它给出了不同 SAMPNAME 计数的预期值,但没有给出 SAMPSIZE 的预期 SUM(因为它在 SAMPNAME 不不同时重新考虑了 SAMPSIZE)
如果我执行以下操作,将获得所需的结果:
select DISTINCT TC_ID from TEST_TABLE
然后对于每个 DISTINCT TC_ID,调用
select count(sn), sum(ss), TC_ID from (select distinct SAMPNAME as sn,SAMPSIZE as ss, TC_ID from TEST_TABLE where TC_ID=$currTCID)
是否可以在单个 SQLite SQL 查询中实现上述目标?
(不幸的是,SQLite 似乎不支持 OVER/PARTITION BY 构造。)
希望问题足够清楚..
编辑:
虽然查询与 CL 提供的 SQL 一起工作正常(谢谢!),但还想知道是否存在不同的表/模式设计,它可以执行比要求为每个组/行执行相关子查询更有效的查询?
提前致谢!