如何获取序列中出现次数最多的元素的值?

How to get the value of the element with the maximum number of occurrences in the sequence?

我有两个问题。

  1. 如何获取序列中条目数最大的元素
  2. 如何获取entry元素的序号?

我有代码:

return apoc.coll.duplicatesWithCount([1, 2, 3, 4, 5, 6, 6, 6, 7, 7])

使用代码我得到了结果:

[
 {
   "item": 6,
   "count": 3
 },
 {
   "item": 7,
   "count": 2
 }
]

但我想要下一个结果:

6

或在这样的数据上:[1] 返回:1

apoc.coll.duplicatesWithCount 只会考虑重复项,不会获取没有重复项的列表的结果。它不适用于您提到的第二个示例 - Or on such data:[1] Returned: 1.
使用 apoc.coll.frequencies 和 UNWIND apoc 调用的输出,按计数排序并只获取第一行。

UNWIND apoc.coll.frequencies([1, 2, 3, 4, 5, 6, 6, 6, 7, 7]) AS output
RETURN output ORDER BY output.count DESC SKIP 0 LIMIT 1

由于结果是一张地图,您可以拆分元素并计数:

UNWIND apoc.coll.frequencies([1, 2, 3, 4, 5, 6, 6, 6, 7, 7]) AS output 
RETURN output.item AS `Max Count Element`, output.count AS `Max Count` ORDER BY output.count DESC SKIP 0 LIMIT 1

或者只是元素: UNWIND apoc.coll.frequencies([1, 2, 3, 4, 5, 6, 6, 6, 7, 7]) 作为输出 RETURN output.item AS Max Count Element ORDER BY output.count DESC SKIP 0 LIMIT 1

SKIP 在此用例中是不必要的。但是您可以结合使用 SKIP 和 LIMIT 来创建光标并在 second-highest 频率、第三高频率等之间移动...