Question

Trying to use the following 'ANY' syntax and gets an error:

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING EVERY (D.budget > 1000000) AND ANY (D.budget < 5000000)
             );

Error output:

psql:queries.sql:28: ERROR:  syntax error at or near "ANY"
LINE 6:      HAVING EVERY (D.budget > 1000000) AND ANY (D.budget < 5...
                                                     ^

Edit: I am using Postgres and connecting using Psql.

Was it helpful?

Solution

You can make it simpler, no?

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 WHERE D.budget > 1000000             
                 GROUP BY D.managerid
                 HAVING MIN(D.budget) < 5000000
             );

or

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING EVERY (D.budget > 1000000) AND MIN(D.budget) < 5000000
             );

or

SELECT DISTINCT Em.ename
FROM Emp Em, Dept D
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING MIN (D.budget) > 1000000 AND MIN(D.budget) < 5000000
             );

OTHER TIPS

SELECT Em.ename
FROM Emp Em                                            --- only Emp table
WHERE Em.eid In (Select D.managerid 
                 FROM Dept D
                 GROUP BY D.managerid
                 HAVING ALL (D.budget > 1000000)       --- ALL
                   AND ANY (D.budget < 5000000)
             );
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top