2014-09-19 177 views
0

我正在努力完成一項任務。我需要創建一個選擇查詢,其中: 對於每個特定的列出日期顯示日期和收入其中收入是銷售單位數量乘以單位價格(但只有當收入大於或等於10000時)。 有兩個表格:產品 & 訂單產品包含列:單元類型,價格。而爲了包含列:UNITTYPE日期帶兩個表的SQL選擇查詢

(銷售臺數),這是我的選擇查詢嘗試:

SELECT 
order.date, 
product.price*order.number AS revenue 
FROM product 
INNER JOIN 
order 
ON product.unittype = order.unittype 
WHERE product.price*order.number >= 10000; 

我的結果都不是,甚至接近10k(介於39和1.3k之間),所以我想知道我是否輸入了錯誤或者是否有更有效的輸入方式?

+0

您的查詢似乎是正確的對我來說,這方言是你使用?甲骨文? – 2014-09-19 02:08:27

+0

要排除故障,請展開您的select子句以顯示價格和數字值。 – 2014-09-19 02:15:58

+0

不確定爲什麼它不應該爲內連接,但你可以嘗試有兩個選擇像'select date,revenue from(select order.date as date,product.price * order.number as product from inner inner join order on product.unittype = order.unittype)where revenue> = 10000;' – eckes 2014-09-19 02:16:01

回答

1

如果這意味着要總數爲一天(而不是個別行),你需要一個聚集和having條款:

SELECT 
order.date, 
SUM(product.price*order.number) AS revenue 
FROM product 
INNER JOIN 
order 
ON product.unittype = order.unittype 
GROUP BY  order.date 
HAVING  SUM(product.price*order.number) >= 10000 
+0

也許如果您把HAVING的收入> = 10000,那會更有效率嗎? – CMPS 2014-09-19 02:13:09

+0

在SQL Server中,它不會是有效的sql。無論如何,它不認爲在任何情況下它都會更有效率(在性能方面)。 – 2014-09-19 05:48:08

+0

謝謝尼克。我想總結一天的總和是正確的,你的例子給了我一個更有希望的結果! – Thomas 2014-09-19 10:52:13