Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL HAVING子句_Sql_Postgresql_Aggregate Functions_Having - Fatal编程技术网

PostgreSQL HAVING子句

PostgreSQL HAVING子句,sql,postgresql,aggregate-functions,having,Sql,Postgresql,Aggregate Functions,Having,我昨晚在这里发了帖子,想找人帮我做些家庭作业。我只想问最后一个问题 以下是我正在使用的模式的相关部分: CREATE TABLE votesOnPoll( user_id int, poll_id int, option_id int, voteDate date, CONSTRAINT votesOnPoll_pk PRIMARY KEY (user_id, poll_id), CONSTRAINT votesOnPoll_user_fk FOREIGN KEY (u

我昨晚在这里发了帖子,想找人帮我做些家庭作业。我只想问最后一个问题

以下是我正在使用的模式的相关部分:

CREATE TABLE votesOnPoll(
  user_id int,
  poll_id int,
  option_id int, 
  voteDate date,
  CONSTRAINT votesOnPoll_pk PRIMARY KEY (user_id, poll_id),
  CONSTRAINT votesOnPoll_user_fk FOREIGN KEY (user_id) REFERENCES users(id),
  CONSTRAINT votesOnPoll_poll_fk FOREIGN KEY (poll_id,option_id) REFERENCES pollOptions(poll_id, option_id)
);
我正在尝试编写一个查询,该查询将返回投票最多的投票选项的
选项\u id
,以及投票数。这只是民意测验10

我可以通过以下查询成功返回每个选项的投票数:

SELECT p10.oid AS option_id, MAX(p10.votecount)
FROM (SELECT option_id AS oid, COUNT(DISTINCT user_id) AS votecount
      FROM votesOnPoll
      WHERE poll_id = 10
      GROUP BY option_id) AS p10
GROUP BY p10.oid;
在本例中,返回以下关系:

option_id | max
----------+-----
        0 |   7
        1 |  10
        2 |  11
我想把它裁剪一下,这样它就只有元组
(2,11)
(或者任何获胜的选项)。我想我可以通过添加以下
HAVING
子句来实现这一点:

HAVING COUNT(p10.votecount) >= ALL (SELECT COUNT(DISTINCT user_id)
                                    FROM votesOnPoll
                                    WHERE poll_id = 10
                                    GROUP BY option_id)
但是,这将返回一个空关系

我已经确认,内部
SELECT
语句返回我期望的结果——也就是说,它返回一个与单个属性的关系,即特定选项的投票数。在这种情况下,返回值为:

 count
-------
     7
    10
    11

有什么想法吗?

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。我没有说“HAVING COUNT(…)”,而是用了“HAVING MAX(…)”,我得到了正确的信息。

LoL-LoL-LoL!你看,我很久以前就注意到,要想找到自己问题的答案,没有比先正确地表述问题更快的方法了。