【问题标题】:finding or "compressing" similar rows in sqlite在 sqlite 中查找或“压缩”相似的行
【发布时间】:2018-11-24 14:10:00
【问题描述】:

我有一个表格,其中每一行都有一个“group_id”列。我想将该组中所有行的“压缩”输出作为单行(或更简洁的任何类型的结构 - 并不重要)。此行仅供应用使用,不得保存在数据库中。由于表很大,我自己计算会很贵。我愿意预先计算这个值并缓存它。我不打算在那之后即时计算。

在“压缩”表示中,我不关心哪些值属于哪些键。我只想为给定的group_id 预先设置所有选项。

例如,我的表的一个子集如下所示:

primary_key, group_id, column_a, column_b, column_c
key1, g1, a, b, c
key2, g1, a, b_1, c
key3, g1, a_1, b, c
key4, g2, a, b, c
key5, g2, a, b, c
key6, g3, x, y, z
key7, g3, x_1, y_1, z_1
key8, g3, x_2, y_2, z_3

一个很好的结果应该是

g1, a & a_1, b & b_1, c
g2, a, b, c
g3, x & x_1 & x_2, y & y_1 & y_2, z & z_1 & z_2

就像所有列上的 GROUP BY 将所有可能的结果聚合到 group_id 列的单行

【问题讨论】:

  • 提示:GROUP_CONCAT().
  • 完美!回答并会除外!

标签: sql sqlite group-by aggregate-functions


【解决方案1】:

根据戈登的评论,

只需要做:

SELECT group_id, group_concat(DISTINCT column_a), group_concat(distinct column_b), group_concat(distinct column_c) 
FROM my_table
GROUP BY group_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2011-05-11
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2019-04-06
    相关资源
    最近更新 更多