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.
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