2012-05-27 25 views
1

這是一個家庭作業,但我不能一個人做。SQL諮詢,如何解決?

1)列出代碼名稱,銷售車輛數量以及銷售總利潤 ,銷售收入高達5000美元。

resale: 
cod | name | city  | state 
--------+-----------------+------------+-------- 
01 | Paraiso | Sao Paulo | SP 
02 | Alameda | Taubate | SP 
03 | Cabana | Macae  | RJ 
04 | Santana | Betim  | MG 


Automotive: 
cod | manufacturer | model  | year | country | price 
--------+------------+-----------------+------+-----------+---------- 
01 | 01   | Gol  | 2000 | Brasil | 25000.00 
02 | 01   | Golf  | 2005 | Argentina | 39000.00 
03 | 04   | Ford Ka | 1990 | Brasil | 15000.00 
04 | 03   | Corsa Seda | 1995 | Brasil | 12500.00 
05 | 04   | Fiesta  | 2003 | Argentina | 20000.00 
06 | 03   | Corsa Seda | 1995 | Argentina | 10000.00 
07 | 05   | Palio  | 2002 | Brasil | 15000.00 
08 | 05   | Siena  | 2006 | Brasil | 26000.00 

sale: 
customer| resale | automotive | date  | value 
---------+---------+-----------+------------+---------- 
02  | 01  | 03   | 2010-02-05 | 17500.00 
04  | 02  | 01   | 2010-01-07 | 28000.00 
01  | 03  | 08   | 2010-02-15 | 28000.00 
02  | 03  | 02   | 2010-03-12 | 42000.00 
03  | 04  | 06   | 2010-02-06 | 11500.00 
03  | 02  | 05   | 2010-01-25 | 22100.00 
01  | 01  | 04   | 2010-01-21 | 15500.00 
03  | 01  | 08   | 2012-02-05 | 17500.00 

我的SQL:

SELECT automotive.cod, resale.name, COUNT(sale.resale) AS ammount, SUM(sale.value - automotive.price) AS total FROM sale, automotive, resale 
WHERE sale.resale = resale.cod AND automotive.cod = sale.automotive 
GROUP BY sale.resale, automotive.cod, resale.name 
HAVING SUM(sale.value - automotive.price) <= 5000; 

我不能獨自完成,我的答案是錯的。

Ps:我正在使用PostgresSQL。

+0

你應該等待這[遷移](http://programmers.stackexchange.com/questions/150434/how-to-solve-sql-consult) - 交叉發佈正在積極傷害。 – Oded

+0

好的,我刪除了其他POST。 – mastergoo

+0

詳細說明「我的回答是錯誤的。」 –

回答

2

你幾乎擁有了:

SELECT r.cod, r.name 
    , count(s.resale) AS amount 
    , sum(s.value - a.price) AS total 
FROM sale s 
JOIN automotive a ON a.cod = s.automotive 
JOIN resale r  ON r.cod = s.resale 
GROUP BY r.cod, r.name 
HAVING sum(s.value - a.price) <= 5000; 

我重新格式化您的查詢與table aliases and explicit JOIN syntax,使之更具可讀性。

基本上,你只需要用r.cod替代a.cod。看起來像一個錯字。這使s.resaleGROUP BY條款冗餘,所以我刪除它。

+0

魔獸,它的工作......非常感謝。 – mastergoo

+0

好吧,我明白了。 – mastergoo

+0

我的查詢幾乎可以肯定......謝謝。 – mastergoo