× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



   -- This should give you 1 of the rows that have the max AGE and SALARY.
   -- Since you have a possibilty of having duplicates, the 'distinct'
   keyword
   -- can be used to return one row or not if all rows ( even duplicates )
   are wanted.
   Select distinct emp.fname, emp.lname, emp.age, emp.salary
    from  emp,
          ( select fname, lname, max( age ), max( salary )
             from  emp
            group by fname, lname ) emx
   where  emp.fname   =  emx.fname
    and   emp.lname   =  emx.lname
    and   emp.age     =  emx.age
    and   emp.salary  =  emx.salary

   hth

 Actually, I completely made a mistake portraying what I wanted.  I DON'T
 want the records combined.  In that example, the result should have been:
 John     Smith    25         60000

 Basically, return the row with the highest salary ... if there are multiple
 rows with the same highest salary, then only return the row with the highest
 salary AND the highest age ... grouped by first name and last name.

 -----Original Message-----
 SELECT fname, lname, max(age), max(salary) FROM file GROUP BY fname,lname

 -----Original Message-----
 John     Smith    40    60000

 -----Original Message-----
 Lets say you have:
 John     Smith    25         60000
 John     Smith    40         20000
 John     Smith    20         15000

 As the only contents of your file, which record do you want back? If we
 get the John Smith with the highest salary, or the John Smith with the
 highest age we will be down to one John Smith and it will be meaningless
 to narrow it down further.

 -----Original Message-----
 I am trying to figure out a query that needs to display rows of grouped
 data based on max values of two columns.

 Here is an example.
 Fname         lname    age       salary
 ----------  ---------  ----     --------
 John          Smith    39         20000
 John          Smith    38         20000
 John          Smith    40         15000
 Adam          Apple    20         25000
 Adam          Apple    21         25000
 Adam          Apple    19         18000

 I need to return one line from each group (one john smith and one Adam
 Apple) based on highest salary and age.  For john Smith, highest Salary
 is 20000 and then highest age is 39, so the row returned would be John
 Smith 39 20000.  For Adam Apple it would be Adam Apple 21 25000.

 I can get it narrowed down to rows grouped with highest salary, but then
 I can not think how to get it to narrow it down another level and only
 display the one with the larger age number after that.

 John A Candidi

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.