如何从表中获取具有特定组计数的所有行?

时间:2017-02-27 10:05:34

标签: sql sqlite count group-by

我有一个像这样的简单表

spatialite> select id, group_id, object_id, object, param from controlled_object; 1|1|150|nodes|0.5 2|1|186|nodes|0.5 3|2|372|nodes|1.0

第二列是group_id。我想从表中检索所有条目,加上组的计数。

1|1|150|nodes|0.5|2
2|1|186|nodes|0.5|2
3|2|372|nodes|1.0|1

我认为交叉连接是最佳选择

   SELECT
  *
  , cj.cnt
FROM
  controlled_object
CROSS JOIN (
  SELECT
    COUNT(DISTINCT group_id) AS cnt
  FROM
    controlled_object
) AS cj

但那给了我

1|1|150|nodes|0.5|2|2
2|1|186|nodes|0.5|2|2
3|2|372|nodes|1.0|2|2

如何从表中获取所有行,包括特定组的计数?

2 个答案:

答案 0 :(得分:1)

使用group_id

分组的计数器加入源数据
select c.id, c.group_id, c.object_id, c.object, c.param,cnt from controlled_object  c join
(select group_id,count(*) cnt from controlled_object group by group_id) p on c.group_id =p.group_id  ;

大桌子不是很好 对于大表来说,Sqlite并不是一个好主意: - )

答案 1 :(得分:1)

您可以使用相关子查询计算计数:

primes=[]

n=3

print("2")
while True:
    is_prime=True
    for prime in primes:
        if n % prime ==0:
            is_prime=False
            break
        if prime*prime>n:
            break

    if is_prime:
        primes.append(n)
        print (n)

    n+=2