我有一个包含两列的表:
+---------+--------+
| keyword | color |
+---------+--------+
| foo | red |
| bar | yellow |
| fobar | red |
| baz | blue |
| bazbaz | green |
+---------+--------+
字符串
我需要在PostgreSQL中做一些one-hot编码和转换表,以:
+---------+-----+--------+-------+------+
| keyword | red | yellow | green | blue |
+---------+-----+--------+-------+------+
| foo | 1 | 0 | 0 | 0 |
| bar | 0 | 1 | 0 | 0 |
| fobar | 1 | 0 | 0 | 0 |
| baz | 0 | 0 | 0 | 1 |
| bazbaz | 0 | 0 | 1 | 0 |
+---------+-----+--------+-------+------+
型
如何在SQL中进行这种转换?
3条答案
按热度按时间cfh9epnr1#
如果我理解正确的话,你需要条件聚合:
字符串
unguejic2#
要在具有大量列的表上使用此代码,请使用Python生成查询:
1)创建一个包含唯一变量的列表,并将其导入Python,比如:
list
。字符串
2)复制输出(减去最后一行的最后一个逗号)
3)然后:
型
bwntbbo33#
在测试用例中使用
tablefunc
扩展和COALESCE()
to fill all NULL fields实现目标的另一种方法:字符串
如果你只是想得到
psql
下的结果:型