我有一张table:
CREATE TABLE ask (
item TEXT ,
value INTEGRER NOT NULL
);
INSERT INTO ask (item,value) VALUES
("A", 1),
("A", 4),
("A", 3),
("B", 0),
("B", 1),
("C", 2),
("C", 4);
Item|值
A|1
A|4
A|3
B|0
B|1
C|2
C|4
我想要两个额外的列,每个项目的最大值和最小值:
Item|Value|min_val|max_val
-|-|
A|1|1|4
A|4|1|4
A|3|1|4
B|0|0|1
B|1|0|1
C|2|2|4
C|4|2|4
我如何才能在SQLite中获得它?这不起作用:
SELECT *, max(value) AS max_val, min(val) AS min_val FROM ask;
4条答案
按热度按时间kmpatx3s1#
使用窗口函数而不是聚合函数:
请参阅demo。
0vvn1miw2#
你不应该这样做。最有可能的是,您应该保持表的原样,而创建一个视图:
q5lcpyga3#
将CREATE TABLE中的第一个文本数据类型更改为varchar
插入您的数据
然后,在运行以下查询之后
bn31dyow4#
您可以创建一个具有最大/最小值的临时表,然后将其联接以创建所需的表/结果。
即。
然后