当前位置: 首页 > 面试题库 >

在单独的字段中计算具有匹配值的记录数

年高洁
2023-03-14
问题内容

我有这样一个表(myTable):

id  | name  | orig_id
----+-------+--------
01  | Bill  | -
02  | Tom   | 01
03  | Sam   | 01
04  | Alex  | 02
05  | Phil  | -
06  | Bob   | 01

我想要一个查询,该查询返回每个记录,但是增加了一个列,该列包含orig_id与当前行的id相等的其他行的计数。

结果表如下所示:

id  | name  | orig_id | mycount
----+-------+---------+--------
01  | Bill  | -       | 3
02  | Tom   | 01      | 1
03  | Sam   | 01      | 0
04  | Alex  | 02      | 0
05  | Phil  | -       | 0
06  | Bob   | 01      | 0

我尝试了以下查询,但没有结果:

SELECT *, COUNT(t.name) AS mycount
FROM "myTable" AS t
WHERE t.id=t.orig_id
GROUP BY t.id;

我怎样才能达到预期的效果?


问题答案:

您可以通过联接和聚合来做到这一点:

SELECT t.*, tsum.mycount 
FROM myTable t join
     (select orig_id, count(name) as mycount
      from myTable
      group by orig_id
     ) tsum
     on t.id = tsum.orig_id;


 类似资料:
  • 对于多值字段,如下所示: 此查询返回我们在上面插入的文档: 有没有办法让弹性单独匹配列表中的每个项目?我想让文档匹配“银行”、“美国”、“银行”、“游戏”、“加拿大”,但不匹配“微软游戏” 我不想使用嵌套文档或脚本

  • 问题内容: 我有一张桌子和and collums。 我想得到每个的总数。我正在尝试以下查询: 我也试过这个查询 但是没有得到实际的结果。我想要以上数据的结果: 问题答案: 您只需要使用而不是即可。因此,请尝试以下查询: 看到这个SQLFiddle 让您使用聚合函数,如,,, ,等而只是删除重复。

  • 为了澄清,我有一个全名数组,但是文档的firstname和lastname是分开的,所以我想做一些类似的事情:

  • 我有一个像这样的mysql表: 我需要一个查询来提取具有类别“a”和“F”的文档。 示例: 请帮帮我!谢谢

  • 我有一个正在测试的方法,它返回一个对象列表。。。例如“Person”对象。 我有一个“预期的最后名字”列表来验证结果。 我目前有一个工作测试,它循环遍历“expectedLastNames”中的名称,并断言每个名称都包含在“Person”对象列表中。与此类似(请注意,以下代码段位于Kotlin中): 当断言通过时,这非常有效,并验证了我的方法。然而,当测试失败时,这是非常麻烦的,因为一旦遇到缺少的

  • 问题内容: 说我有一个像这样的数组: 如何计算具有给定值的数字(在示例中为空白)? 而且有效吗?(大约十二个数组,每个数组包含数百个元素)此示例超时(超过30秒): 在这种情况下,空白元素的数量为3。 问题答案: 如何使用array_count _values来获得一个为您计算一切的数组?