sandya_116
asked on
Script Help
I have a script that shows GroupName, LoginID, and OrderCount ordered by Groupname, OrderCount in descending order. There are only 3 groups. Example data is as follows:
Group1 abc 24
Group1 def 20
Group1 ghi 18
Group1 jkl 10
Group2 abc2 30
Group2 def2 24
Group2 ghi2 15
Group2 jkl2 8
Group3 abc3 14
Group3 def3 12
Group3 ghi3 10
Group3 jkl3 5
I need to pull which LoginID in each group has the highest OrderCount? so there will be total of 3 rows. Can someone let me know how I can do that? Thanks.
Group1 abc 24
Group1 def 20
Group1 ghi 18
Group1 jkl 10
Group2 abc2 30
Group2 def2 24
Group2 ghi2 15
Group2 jkl2 8
Group3 abc3 14
Group3 def3 12
Group3 ghi3 10
Group3 jkl3 5
I need to pull which LoginID in each group has the highest OrderCount? so there will be total of 3 rows. Can someone let me know how I can do that? Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Try it this way:
Select t.GroupName,
t.LongID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
Select t.GroupName,
t.LongID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
A slight typo and correction:
Select t.GroupName,
t.LoginID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
Order By
t.GroupName
Select t.GroupName,
t.LoginID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
Order By
t.GroupName
Incidentally this is how I tested it:
Create Table YourTableName (
GroupName varchar(50),
LoginID varchar(10),
OrderCount integer)
SET NOCOUNT ON
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'abc', 24)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'def', 20)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'ghi', 18)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'jkl', 10)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'abc2', 30)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'def2', 24)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'ghi2', 15)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'jkl2', 8)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'abc3', 14)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'def3', 12)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'ghi3', 10)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'jkl3', 5)
Select t.GroupName,
t.LoginID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
Order By
t.GroupName
Drop Table YourTableName
And here is my output:
GroupName LoginID OrderCount
Group1 abc 24
Group2 abc2 30
Group3 abc3 14
Create Table YourTableName (
GroupName varchar(50),
LoginID varchar(10),
OrderCount integer)
SET NOCOUNT ON
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'abc', 24)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'def', 20)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'ghi', 18)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group1', 'jkl', 10)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'abc2', 30)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'def2', 24)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'ghi2', 15)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group2', 'jkl2', 8)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'abc3', 14)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'def3', 12)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'ghi3', 10)
Insert YourTableName (GroupName, LoginID, OrderCount) Values ('Group3', 'jkl3', 5)
Select t.GroupName,
t.LoginID,
t.OrderCount
From YourTableName t
Inner Join (
Select GroupName,
MAX(OrderCount) MaxOrderCount
From YourTableName
Group By
GroupName) d On t.GroupName = d.GroupName And t.OrderCount = d.MaxOrderCount
Order By
t.GroupName
Drop Table YourTableName
And here is my output:
GroupName LoginID OrderCount
Group1 abc 24
Group2 abc2 30
Group3 abc3 14
Open in new window