【发布时间】:2021-04-25 09:07:35
【问题描述】:
使用 sqlite3,我如何获得这个示例内存数据库的不同“计数”列? 使用版本 3.27.2
示例数据库
CREATE TABLE events (
id1,
id2,
id3,
PRIMARY KEY (id1, id2)
);
INSERT INTO events (id1, id2, id3)
VALUES
(1,1,99),
(1,2,99),
(1,3,52),
(2,1,6),
(2,2,7),
(2,3,8)
;
.mode columns
.header on
SELECT * FROM events;
所需的打印输出
部分成功 以下适用于前两个新列。
SELECT id1, count(id3) AS total_count, count(DISTINCT id3) AS unique_count
FROM events
GROUP BY id1;
获取最后一列的最佳方法是什么?以下返回error: no such column: total_count
SELECT id1, count(id3) AS total_count, count(DISTINCT id3) AS unique_count, (total_count - unique_count) AS repeated_count
FROM events
GROUP BY id1;
【问题讨论】:
-
总计数减去唯一计数不会得到重复计数。请参阅我对此的回答。 (如果你只想要
total_count - unique_count,你可以使用count(*) - count(distinct id3)。你不能在定义它们的同一个子句中访问别名。)