简体   繁体   中英

prepare the monthly sales report for the customer who has the maximum sales, for the below table

在此输入图像描述

prepare the monthly sales report for the customer who has the maximum sales, for the below table

This is an example of how you can retrieve in 'one' query:

  • the id of the customer who has the maximum sales
  • the sales summary of this customer

First the query that brings the customer_id and the corresponding summary of sales is like:

select customer_id, sum(sales) as sumsales from mytable group by customer_id;

To this query, a rank has to be added to the descending order of Sales summaries. This will allow to select a single record according to its rank later. So, a wrap is necessary:

select customer_id, sumsales, rank() over (order by sumsales desc) as rnk from
    (select customer_id, sum(sales) as sumsales from mytable group by customer_id);

Now that the ranked entries are available, the first ranked record has to be selected:

select customer_id, sumsales from
    (select customer_id, sumsales, rank() over (order by sumsales desc) as rnk from
        (select customer_id, sum(sales) as sumsales from mytable group by customer_id)
    )
where rnk=1;

However, this may not be the most effective way to achieve this.

EDIT:

In order to avoid a wrapping layer, just to add the rank, it is possible to add the rank foeld to the first internal query:

select customer_id, sum(sales) as sumsales, rank() over (order by sum(sales) desc) as rnk
from mytable group by customer_id;

And then, a single wrapping query is needed to select the first ranked record as:

select customer_id, sumsales from (
    select customer_id, sum(sales) as sumsales, rank() over (order by sum(sales) desc) as rnk
    from mytable group by customer_id
)
where rnk=1;

Reference to other similar relevant answers here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM