按另一个属性执行分组时选择一个属性
Selecting an atrribute when performing grouping by another attribute
我有以下名为 Pokemon
的 table,其中包含一些口袋妖怪的信息。
+------------+-------+--------+--------+--+
| name | type | weight | color | |
+------------+-------+--------+--------+--+
| bulbasaur | grass | 10 | green | |
| squirtle | water | 7 | blue | |
| charmander | fire | 8 | orange | |
| cyndaquil | fire | 4 | black | |
| staryu | water | 12 | orange | |
+------------+-------+--------+--------+--+
我想按颜色 table 和每个口袋妖怪的名字 select 分组
属于每个颜色组。
即我要4组:
- 绿色
- 蓝色
- 橙色
- 黑色
以及每组中每只神奇宝贝的名字:
- 灯泡龙
- 杰尼龟
- 小火龙,staryu
- 辛达奎尔
我试过在 SQL 中使用 GROUP BY 子句,如下所示:
SELECT name
FROM POKEMON
GROUP BY color
但这行不通,因为 GROUP BY 子句坚持认为 SELECT 中的列属性必须包含在 GROUP BY 中或对其执行聚合函数。
因为这是我在 SQL 编码的第三天,我还没有找到解决这个问题的方法。
提前感谢您抽出宝贵时间提供帮助。
你还需要select颜色,比如:
SELECT name, color
FROM POKEMON
GROUP BY name, color
您需要字符串聚合。在 Postgres 中,您可以这样表述:
select color, string_agg(name, ',') as names
from pokemon
group by color
我有以下名为 Pokemon
的 table,其中包含一些口袋妖怪的信息。
+------------+-------+--------+--------+--+
| name | type | weight | color | |
+------------+-------+--------+--------+--+
| bulbasaur | grass | 10 | green | |
| squirtle | water | 7 | blue | |
| charmander | fire | 8 | orange | |
| cyndaquil | fire | 4 | black | |
| staryu | water | 12 | orange | |
+------------+-------+--------+--------+--+
我想按颜色 table 和每个口袋妖怪的名字 select 分组 属于每个颜色组。
即我要4组:
- 绿色
- 蓝色
- 橙色
- 黑色
以及每组中每只神奇宝贝的名字:
- 灯泡龙
- 杰尼龟
- 小火龙,staryu
- 辛达奎尔
我试过在 SQL 中使用 GROUP BY 子句,如下所示:
SELECT name
FROM POKEMON
GROUP BY color
但这行不通,因为 GROUP BY 子句坚持认为 SELECT 中的列属性必须包含在 GROUP BY 中或对其执行聚合函数。
因为这是我在 SQL 编码的第三天,我还没有找到解决这个问题的方法。
提前感谢您抽出宝贵时间提供帮助。
你还需要select颜色,比如:
SELECT name, color
FROM POKEMON
GROUP BY name, color
您需要字符串聚合。在 Postgres 中,您可以这样表述:
select color, string_agg(name, ',') as names
from pokemon
group by color