Q
Problem solve Get help with specific problems with your technologies, process and projects.

Listing sales agent with highest total by month

I am trying to create an ASP Web page which lists the most successful agents (salesmen) for each previous month.

February 2002 - Simon Cooper - \$12345
January 2002 - Joe Fletcher - \$18371
etc...

I already know how to find the sales totals for each agent, however I am a little stuck as to how to list only the highest one, and more importantly - how to list them by month.

Any ideas would be MUCH appreciated!

I'll illustrate with an example. Suppose we have a table of orders like this:

```create table Orders
( Ordered datetime,
SalesRep varchar(30),
Amount money );
```
That table is populated with this SQL:
```insert into Orders values ('2002-01-14','Joe',4000);
insert into Orders values ('2002-01-20','Roger',300);
insert into Orders values ('2002-01-21','Susan',6000);
insert into Orders values ('2002-01-25','Susan',1400);
insert into Orders values ('2002-02-03','Roger',300);
insert into Orders values ('2002-02-05','Susan',18000);
insert into Orders values ('2002-02-12','Joe',5000);
insert into Orders values ('2002-02-17','Joe',20000);
insert into Orders values ('2002-02-23','Joe',2900);
insert into Orders values ('2002-02-24','Susan',100);
```
We know we can get a summary of orders placed by month for each sales rep with SQL like this:
```select substring(convert(varchar,Ordered,120),1,7) Month,
SalesRep,
sum(Amount) Amount
from Orders
group by substring(convert(varchar,Ordered,120),1,7),
SalesRep;
```
The SUBSTRING and CONVERT functions are MS SQL Server functions that serve merely to extract the year and month from the Ordered date. In Oracle, I might use the TO_CHAR and TRUNC functions to accomplish the same thing. The results look something like this:
```MONTH     SALESREP    AMOUNT
--------- -------- ---------
2002-01   Joe        4000.00
2002-01   Roger       300.00
2002-01   Susan      7400.00
2002-02   Joe       27900.00
2002-02   Roger       300.00
2002-02   Susan     18100.00
```
We are interested in selecting the highest performing sales representative for each month. From the results, we see that Susan and Joe are the highest performers for January and February respectively. So how do we select only those rows? The question we wish to answer is, "For each month, who is the sales rep with the highest total sales?" But in order to phrase this in terms more appropriate for SQL, the question might be, "For each month, who are the sales reps with total sales equal to the total sales of the rep with the highest total sales for the month." This may sound confusing, but it works for SQL. We'll start by creating a view to make our final SQL a bit more readable. Here it is:
```create view OrderSummary as
select substring(convert(varchar,Ordered,120),1,7) Month,
SalesRep,
sum(Amount) Amount
from Orders
group by substring(convert(varchar,Ordered,120),1,7),
SalesRep;
```
Then, we write our SQL in terms of the aforementioned SQL friendly question, selecting all of the rows where the monthly sales are equal to the maximum monthly sales for a given month. It looks like this:
```select *
from OrderSummary t
where Amount = ( select max(Amount) from OrderSummary
where Month = t.Month )
order by t.Month;
```
The results are just what we'd expect:
```MONTH     SALESREP    AMOUNT
--------- -------- ---------
2002-01   Susan      7400.00
2002-02   Joe       27900.00
```
Incidentally, this SQL has the fortunate quality of being able to handle ties nicely. For example, if Roger were to tie with Susan in January, we would probably want both of them to show up. Let's give Roger another order to demonstrate the situation and run the SQL again.
```insert into Orders values ('2002-01-30','Roger',7100);

MONTH     SALESREP    AMOUNT
--------- -------- ---------
2002-01   Roger      7400.00
2002-01   Susan      7400.00
2002-02   Joe       27900.00```

Start the conversation

Send me notifications when other members comment.

SearchDataManagement

• PlanetScale extends multi-cloud database as a service

Open source-based PlanetScaleDB adds support for Microsoft Azure, enabling a multi-cloud database as a service platform that ...

• Oracle NoSQL database comes to the cloud

Another Oracle database is coming to the cloud with the general availability of Oracle NoSQL Database Cloud Service as the demand...

• MariaDB SkySQL enables cloud-native database as a service

MariaDB brings back an old name for its cloud-native database-as-a-service platform. MariaDB CEO Michael Howard details how he's ...

• Importance of analytics clear amid COVID-19 crisis

With health organizations and business leaders alike trying to minimize the effects of COVID-19, analytics is playing a critical ...

• AI tools in analytics software key in fighting COVID-19

With data skewed by incomplete testing, augmented intelligence and machine learning tools are helping data scientists create ...

• Should your company hire a freelance data scientist?

Enterprises need to make the right hiring choices when it comes to supporting their data projects. Here are some reasons your ...

SearchSAP

• SAP S/4HANA deployment options: Legacy ERP vs. cloud

Take this tour of the on-premises S/4HANA and its two cloud siblings and get expert advice on major differences in cost and ...

• Floating the possibilities of SAP S/4HANA Cloud migration

When weighing the advantages of abandoning legacy ERP systems for SAP S/4HANA Cloud, factors include implementation and support ...

SearchSQLServer

• SQL Server database design best practices and tips for DBAs

Good database design is a must to meet processing needs in SQL Server systems. In a webinar, consultant Koen Verbeeck offered ...

• SQL Server in Azure database choices and what they offer users

SQL Server databases can be moved to the Azure cloud in several different ways. Here's what you'll get from each of the options ...

• Using a LEFT OUTER JOIN vs. RIGHT OUTER JOIN in SQL

In this book excerpt, you'll learn LEFT OUTER JOIN vs. RIGHT OUTER JOIN techniques and find various examples for creating SQL ...

TheServerSide.com

• Eclipse launches Theia 1.0 as alternative to VS Code

The Eclipse Foundation's Theia framework for building desktop and cloud IDEs has the potential to be as big as the initial ...

• Developing a COVID-19 application? Design it the right way

Application developers with skills and an idea could design an app to combat the virus. Follow these insights to effectively ...

• How developers can volunteer during the COVID-19 pandemic

What resources can developers offer to go against COVID-19? Explore some promising developer volunteer and open source project ...

SearchDataCenter

• Build a migration plan for enterprise edge infrastructure

Micro data centers are essential to edge computing use cases. Build an effective migration plan through site selection, ...

• Tech giants aim supercomputers, clouds at finding a COVID-19 cure

The new COVID-19 HPC consortium comprised of tech giants, national labs and academia are using supercomputers and clouds to speed...

• Top vendor SDDC certification programs for admins

If you decide to grow your knowledge of software-defined data center technologies, VMware, Nuage Networks and Microsoft offer ...

SearchContentManagement

• 4 roles of AI in content management systems

Enterprise content management systems employ AI in a number of ways, including chatbots, robotic process automation, enterprise ...

• Creating digital experiences key to driving exceptional CX

The way in which businesses build digital experiences is ever-evolving. It's a race to create easier-to-use customer interfaces ...

• Vendors offer free remote work technology for telecommuting

It's more than a marketing ploy: Cloud technology vendors, seeing their own issues enabling remote work, extend paid products to ...

SearchHRSoftware

• How companies can use tech to ramp up remote work productivity

With the sudden spike of employees working from home, companies need to get creative in how they keep employees connected and ...

• H-1B work visa petitions hit record high, despite pandemic

The U.S. received a record 275,000 H-1B work visas for the 2021 fiscal year. But these visa petitions were prepared in better ...

• How to create an employee journey map

This handy guide shows you how to build your own employee journey map, which is more important than ever as the coronavirus ...

Close