2016-05-12 78 views
0

我有一个划分销售按国家的数select语句,priceBanding(见下面的例子)获得平均设置

enter image description here

select语句看起来如下:

SELECT p.[Price Band] 
,t.[Country] 
,o.COUNT([Order]) as [Order Count] 
FROM #price p (temp table) 
INNER JOIN country t ON p.CountryCode = t.countryCode 
INNER JOIN sales o ON o.salesValue >= p.startPrice and s.salesValue < p.endPrice 

我希望能够做的是基于这个结果我想得到一个单位计数平均值即所有20岁以下的订单什么是平均单位计数和所有其他相同。我怎样才能做到这一点?

它最可能很简单,但我不能通过它考虑。

我什么后:

enter image description here

因此,大家可以看到,在价格带< 20在英国顺序号是50,而该单位平均为2。正如我所说早些时候,我想要20以下的所有订单的平均单位(图中为50)。

更清楚了吗?

在此先感谢。

编辑:

enter image description here

第一个表:假设它是源

而第二个表得到平均,这就是我所追求的。

+3

你能分享一下你想要得到的样本数据结果吗?理解你想要做的事情有点难。 – Mureinik

+0

另外p.Id = c.Id和p.ID = s.ID确实有意义,FK在哪里? – Ako

+0

另外,如果您向我们显示原始表格数据或至少它的一个子集,那将会很好。 –

回答

0

难道你只是使用avg()

SELECT p.[Price Band], t.[Country], 
     o.COUNT(*) as [Order Count], 
     AVG(Items) 
FROM #price p INNER JOIN 
    country t 
    ON p.CountryCode = t.countryCode INNER JOIN 
    sales o 
    ON o.salesValue >= p.startPrice and s.salesValue < p.endPrice 
GROUP BY p.[Price Band], t.[Country] 
ORDER BY t.[Country], p.[Price Band] 

注:SQL Server会整数的整数除法(所以3/2 = 1不1.5)同样地,对于AVG()。使用小数点数字更准确。一个简单的方法是使用AVG(items * 1.0)

+0

干杯。多数民众赞成在我之前,但我想知道如果theres更简单的方式,谢谢。 – Faiz