Ok, At any rate, you could replace your dummy join by a cross join:
SELECT nfr.score FROM student nfr LEFT OUTER JOIN ( SELECT a.score as fra FROM student a CROSS JOIN student b WHERE a.score < b.score ) frab ON frab.fra = nfr.score WHERE frab.fra is null and nfr.score is not null ; Regards, Furcy 2014-04-23 16:49 GMT+02:00 Sanjay Subramanian <sanjaysubraman...@yahoo.com>: > Thanks > For the sake of this question I wanted to avoid all order by and limit > syntax 😄. It's more of a challenge question > Regards > Sanjay > > Sent from my iPhone > > On Apr 23, 2014, at 2:51 AM, Furcy Pin <furcy....@flaminem.com> wrote: > > Hi, > > note that if your table contains the max value several time, all the > occurences will be returned. Note also that if it contains a null it will > be returned too. > > How about this? > > SELECT score FROM student ORDER BY score DESC LIMIT 1 ; > > > Note that on this query Impala is incoherent with Hive or mySQL, since > Impala considers > that NULL is *greater* than everything while Hive and mySQL consider NULL > to be *smaller* than everything > > And just for fun, you can also try in Hive: > > FROM > ( > SELECT score FROM student > DISTRIBUTE BY '1' > SORT BY score DESC > ) M > SELECT score > LIMIT 1 > ; > > FROM > ( > SELECT score FROM student > DISTRIBUTE BY '1' > ) M > REDUCE score USING 'sort -rn | head -1' AS score > ; > > The second is just to demonstrate the possibilities of custom reduce, but > is greatly inefficient (in speed and memory). > And be sure to use SET mapred.reduce.tasks=1 ; before if you don't want > idle reduce tasks... > > (I guess I have some spare time too!) > > > > 2014-04-23 3:27 GMT+02:00 Subramanian, Sanjay (HQP) < > sanjay.subraman...@roberthalf.com>: > >> Hey guys >> >> TABLE=STUDENT >> COLUMN=SCORE >> >> U want to find the max value in the column without using any >> aggregation functions. >> >> Its easy in a RDB context but I was trying to get a solution in Hive >> (clearly I have some spare time on my hands - LOL) >> >> select >> nfr.score >> from >> student nfr >> left outer join >> (select >> a.score as fra, >> b.score as frb >> from >> (select >> '1' as dummy, >> score >> from >> student >> ) a >> >> join >> (select >> '1' as dummy, >> score >> from >> student >> ) b >> ON >> a.dummy = b.dummy >> where >> a.score < b.score >> ) frab >> on >> frab.fra=nfr.score >> where >> frab.fra is null >> >> Thanks >> >> Warm Regards >> >> >> Sanjay >> >> >> >