呈现组合的算法易于阅读
Algorithm for presenting combinations easy to read
鉴于要购买的 products/computers 个列表,我想向客户简要介绍可能的规格组合。
我的输入(下图左侧)是一个组合列表。
所需的输出(在下图中的右侧)是图形表示。
数据量有限,所以性能并不重要
问题
是否有算法或方法可以帮助我生成这个?
编辑:更新图像
我相信 PostgreSQL 中的答案是这样的:
-- CREATE TABLE computer(
-- size VARCHAR (50),
-- ram VARCHAR (50),
-- hdd VARCHAR (50)
-- );
SELECT size as size,
STRING_AGG(DISTINCT(ram), '\n') as ram,
hdd as hdd
FROM (
SELECT size as size,
STRING_AGG(DISTINCT(ram), '\n') as ram,
STRING_AGG(DISTINCT(hdd), '\n') as hdd
FROM computer
GROUP BY size, ram
) AS result
GROUP BY size, hdd;
在这个子查询中,我们按大小和 ram 分组,因为据我所知,一行总是有一个大小,而且我们总是可以折叠硬盘。可能有些 ram 是相等的,所以现在我们按 hdd 分组以折叠这些 ram,并按大小分组以保持它们的唯一性。
我希望这有道理并能回答您的问题。
鉴于要购买的 products/computers 个列表,我想向客户简要介绍可能的规格组合。
我的输入(下图左侧)是一个组合列表。 所需的输出(在下图中的右侧)是图形表示。
数据量有限,所以性能并不重要
问题
是否有算法或方法可以帮助我生成这个?
编辑:更新图像
我相信 PostgreSQL 中的答案是这样的:
-- CREATE TABLE computer(
-- size VARCHAR (50),
-- ram VARCHAR (50),
-- hdd VARCHAR (50)
-- );
SELECT size as size,
STRING_AGG(DISTINCT(ram), '\n') as ram,
hdd as hdd
FROM (
SELECT size as size,
STRING_AGG(DISTINCT(ram), '\n') as ram,
STRING_AGG(DISTINCT(hdd), '\n') as hdd
FROM computer
GROUP BY size, ram
) AS result
GROUP BY size, hdd;
在这个子查询中,我们按大小和 ram 分组,因为据我所知,一行总是有一个大小,而且我们总是可以折叠硬盘。可能有些 ram 是相等的,所以现在我们按 hdd 分组以折叠这些 ram,并按大小分组以保持它们的唯一性。
我希望这有道理并能回答您的问题。