像GROUP BY AND HAVING这样的SQL示例

时间:2019-09-04 02:59:58

标签: elasticsearch elasticsearch-sql

我是ES的新手,我需要进行查询

nuget.exe can't find the needed assembly by one specific path

我什至没有起点。引用此SQL like GROUP BY AND HAVING并没有太大帮助。

数据示例

Select value 
from table 
group by value 
having count(distinct(id)) > 1

期望的回报

------------
Value | id |
------------
val1  | 2  |
val2  | 2  |
val3  | 2  |
val1  | 3  |
------------

4 个答案:

答案 0 :(得分:3)

由于您是Elasticsearch的新手,并且还研究SQL,因此建议您看看Elasticsearch-SQL。文档为here

关于您的特定查询,您可以尝试使用translate API,它将为您提供针对特定SQL查询运行的Elasticsearch查询。对于最终的Elasticsearch查询,这可能是一个很好的起点。或者,您可以将ES-SQL与_sql端点一起使用,以发送SQL查询并获取结果。

答案 1 :(得分:1)

您应该在此处声明COUNT(value)COUNT(*)

SELECT value
FROM yourTable
GROUP BY value
HAVING COUNT(*) > 1;

断言COUNT(DISTINCT value) > 1的问题是这种情况永远不会成立。之所以永远不成立,是因为GROUP BY完成后,每个组将由一个且只有一个Value组成。

答案 2 :(得分:0)

尝试一下。

 Select value 
    from table 
    group by value 
    having count(distinct value) > 1

答案 3 :(得分:0)

尝试

const users = [
  {
    'first_name': 'Homer',
    'last_name' : 'Simpson',
    'dob': '03/19/195-', 
    'married': true, 
  }, 
  {
    'first_name': 'Marge',
    'last_name': 'Simpson',
    'dob': '05/12/56',
    'married': true,
  }, 
  {
    'first_name': 'Lisa',
    'last_name': 'Simpson',
    'dob': '04/19/87',
    'married': false,
  }, 
]

for (i in users) {
  if (users[i]['married'] == true)
    console.log(users[i]['first_name'])
}

Check this link