首页 > 解决方案 > 选择具有复合主键的表上组内的每一行的值

问题描述

我正在使用 Ignite 2.8.1 我有一个表T1(a,b,c),其中包含ab作为主列。我想知道每个b组中每个人的价值。

通常这会很好,因为c在这种情况下主键在功能上依赖于分组列,但是 Ignite 返回一个错误,说b必须是group by'a 列之一......这不是我想要的,事实上那是与不分组相同。

使用可用的SELECT - 你能建议如何让 Ignite 为每个组生成a和生成b,甚至只是b. 它愉快地产生a好像它是主键中的唯一列。

标签: sqlignite

解决方案


您可能只想预先计算每个组的计数,然后为每个a&b组合添加此信息:

SELECT a, b, c, cnt
FROM T1 
INNER JOIN (
  SELECT c, COUNT(c) as cnt 
  FROM T1 
  GROUP BY c
) counts
ON counts.c = c

推荐阅读