基于特定大小的排列进行排序

时间:2016-05-13 02:49:30

标签: sql algorithm postgresql

我需要根据11个外键(1-11)的排列将用户分组到一个组中。

我有一个big_table:

FK |  User_ID            FK  |  User_ID
1  |  a                   4  |  c
5  |  a                   1  |  c
3  |  b                   5  |  c
9  |  b                   11 |  c
7  |  b                   2  |  c
  • 组1(G1)将包括大小为2的任何排列(在此示例中为用户a)
  • G2将包括任何大小为3的排列(用户b)
  • G3将包括大小为4到11的任何排列(用户c)

有效排列将存储在单独的表中,一个表用于所有排列大小为2的表,另一个用于排列大小为3的表等。

如何检查用户是否符合适合群组的要求?

(效率更可取,但目标是工作解决方案)。抱歉,我没有任何代码,但我对SQL很新,我不知道从哪里开始解决这个问题。

  

编辑:还有其他组和更多外键,G1-G3仅适用于FK的1-11。

     

我最难解决的问题是如何将多个FK与单个排列进行比较。例如,我该如何比较

 1  |  a   and  3  |  a
  

以算法方式列出有效排列?

1 个答案:

答案 0 :(得分:0)

如果您只想计算外键的数量,请使用count(*)count(distinct)

select user_id, count(*)
from big_table
group by user_id;

这将给出每个用户的外键数量(假设表中没有重复项)。