Sql 为属于一列的固定值集中的每一个值创建一个结果集的习惯用法?
详细的标题,但希望很容易用一个例子来演示。假设我有一张像这样的桌子:Sql 为属于一列的固定值集中的每一个值创建一个结果集的习惯用法?,sql,database-schema,Sql,Database Schema,详细的标题,但希望很容易用一个例子来演示。假设我有一张像这样的桌子: CREATE TABLE sweaters (colour TEXT, size INTEGER, stock INTEGER); 数据如下所示: red 4 100 red 6 100 red 8 200 black 2 200 black 4 150 black 6 300 对于每种尺码,我想知道我们有多少件红色毛衣,有多少件黑色的。我希望输出像这样: size n_r
CREATE TABLE sweaters (colour TEXT, size INTEGER, stock INTEGER);
数据如下所示:
red 4 100
red 6 100
red 8 200
black 2 200
black 4 150
black 6 300
对于每种尺码,我想知道我们有多少件红色毛衣,有多少件黑色的。我希望输出像这样:
size n_red n_black
2 0 200
4 100 150
6 100 300
SELECT size,
SUM(CASE WHEN colour='red' THEN stock ELSE 0 END) as n_red,
SUM(CASE WHEN colour='black' THEN stock ELSE 0 END) as n_black
FROM sweaters GROUP BY size;
我可以这样做:
size n_red n_black
2 0 200
4 100 150
6 100 300
SELECT size,
SUM(CASE WHEN colour='red' THEN stock ELSE 0 END) as n_red,
SUM(CASE WHEN colour='black' THEN stock ELSE 0 END) as n_black
FROM sweaters GROUP BY size;
但这感觉不雅,我发现自己需要做很多。有更好的成语吗
编辑:我应该提到,SQLite是我正在使用的引擎。你想在颜色上做重点吗?你可以使用连接或联合,但我认为这是更优雅的方法。可能还有其他特定于某些特定数据库的方法(如
pivot
或filter
)。