I was asked this question by a friend. You are given a table with just one field which is an integer. Can you the highest value in the field without using the MAX function ?
I think we can change the sign of each column and find the minimum using MIN function. Is that correct?
Advertisement
Answer
Why you would ignore using the function supported on any database is anyone’s guess, especially if you’d use the MIN function, but…
GREATEST
…some database vendors support the GREATEST function:
x
SELECT GREATEST(column)
FROM
GREATEST
returns the highest value, of all the columns specified. Those that support GREATEST
include:
TOP/LIMIT
TOP
is SQL Server (2000+) only:
SELECT TOP 1 column
FROM YOUR_TABLE
ORDER BY column DESC
LIMIT
is only supported by MySQL, PostgreSQL and SQLite
SELECT column
FROM YOUR_TABLE
ORDER BY column DESC
LIMIT 1
ROW_NUMBER
ROW_NUMBER is supported by PostgreSQL 8.4+, Oracle 9i+, SQL Server 2005+:
SELECT x.col
FROM (SELECT column AS col,
ROW_NUMBER() OVER (ORDER BY column DESC) AS rank
FROM YOUR_TABLE) x
WHERE x.rank = 1