Re: Query to get the min of the total

Поиск
Список
Период
Сортировка
От Marta Pérez Romero
Тема Re: Query to get the min of the total
Дата
Msg-id CACnbkr=7uYB8nUtU0AaoVmooqseb1TxawM=AP+-5O8Wy7v7dWQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Query to get the min of the total  (Marta Pérez Romero <martape@gmail.com>)
Ответы Re: Query to get the min of the total  (Marta Pérez Romero <martape@gmail.com>)
Список pgsql-novice
Yes! It works now, thanks a mill :):):)

On 4 May 2012 11:23, Marta Pérez Romero <martape@gmail.com> wrote:
Hiya Oliveiros,

This looks much better now, although the results is not good yet :)

By using the nested query this is what I have now:

SELECT petname,min(total)
FROM(
SELECT petname,SUM(quantity) as total
FROM pets NATURAL JOIN sales
GROUP BY petname) AS subquery
GROUP BY subquery.petname

As a result, it gives me all the results: all petnames with the sum of quantity.

If I change min(total) for max(total) or for sum(total), the result is the same, all petnames :(

Thanks a lot!

On 4 May 2012 11:05, Oliveiros d'Azevedo Cristina <oliveiros.cristina@marktest.pt> wrote:
Howdy,
Marta,
 
have you tried a nested query?
Something like
 
SELECT petname, MIN(total)
FROM (
SELECT petname,SUM(quantity) as total
FROM pets a
NATURAL JOIN sales b
GROUP BY petname
) x
 
 
Best,
Oliveiros
----- Original Message -----
Sent: Friday, May 04, 2012 10:43 AM
Subject: [NOVICE] Query to get the min of the total

Hi All,

I am trying to do something but cannot find the way.
Hopefully you have some suggestions :)

I have two tables, as follows:

pets: with these columns: petcode, petname, petprice, petfamily
sales: with these columns: salescode, petcode, quantity

The pets table contains all the pets in my pet shop, with the code of the pet, its name, its price and the family it belongs to.

So for example:

petcode | petname | petprice  | petfamily
------------------------------------------------------------
 | canary | 5.00  | birds
 | retriever  | 12.00  | dogs
 | siamese  | 28.00  | cats
 | sparrow  | 7.00  | birds
 | poodle  | 16.00  | dogs

The sales table tracks all the sales in the shop, with the code of the sale, the code of the pet that was bought, and the quantity of this pet bought.

For example:

salescode  | petcode  | quantity
----------------------------------------------
1  | 1  | 2
 | 4  | 5
 | 5  | 1
 | 2  | 3
5  | 5  | 8
6  | 1  | 4

Now, I need to build a query that returns the least sold pet, in quantity. It will include the pet name and the quantity sold.

So in the example above it will be:

petname  | quantity
retriever | 3

Now, the problem I have is that I can´t work with nested aggregations.
First I need to get the total quantity by petcode (which will be the sum of quantity). And then get the MIN of the SUM of quantity, which I don´t know how to do.

This is the query so far: 

SELECT 
  pets.petname,
  sum(sales.quantity)
  
FROM  sales INNER JOIN  pets ON  sales.petcode= pets.petcode

GROUP BY 
   pets.petname
  
HAVING SUM(sales.quantity)=(SELECT MIN(quantity) FROM sales)

ORDER BY  pets.petname;

But it does not return any result. How can I do it?

Thanks very much


В списке pgsql-novice по дате отправления:

Предыдущее
От: Marta Pérez Romero
Дата:
Сообщение: Re: Query to get the min of the total
Следующее
От: Marta Pérez Romero
Дата:
Сообщение: Re: Query to get the min of the total