Write a query to find only those customers whose grade are, higher than every customer to the city New York
x
SELECT *
FROM customer
WHERE grade > ALL
(SELECT grade
FROM customer
WHERE city='New York');
Advertisement
Answer
You can use MAX
in your subquery instead:
SELECT *
FROM customer
WHERE grade >
(SELECT MAX(grade)
FROM customer
WHERE city='New York');
As @GordonLinoff points out, if there are no customers from New York
, this query will fail. You can work around that by using COALESCE
to convert the MAX
value from NULL
to -1
(basically you need a number which is lower than the lowest possible value of grade
) e.g.
SELECT *
FROM customer
WHERE grade >
(SELECT COALESCE(MAX(grade), -1)
FROM customer
WHERE city='New York');