呈现组合的算法易于阅读

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,并按大小分组以保持它们的唯一性。

我希望这有道理并能回答您的问题。