2014-09-19 124 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