我需要查询每个Sold Price
List Price
的最大Area
,Building Type
Month
。
例如,我们有一个房地产,我们想找到:
Sold Price
的最大值和百分比是“{1}}”Building Type
按Month
出售的是什么?
MLS No. Area List Price Contract Price Sold Date Sold Building Type
N1959472 N11 329500 20/09/2010 317000 13/11/2010 Semi-Detac
N1990464 N11 339000 08/11/2010 340000 17/11/2010 Apt
答案 0 :(得分:0)
目前尚不清楚“百分比”是什么意思,但我会告诉你如何按月分组以获得最高价格。这个百分比也可能是一种恶化,你可以稍后再添加。
select
Area,
HouseType,
max(PriceSold) as MaxPriceSold
from
YourTable
group by
Area,
HouseType,
Year(DateSold),
Month(DateSold)
答案 1 :(得分:0)
这是我对你所需要的最好的猜测。我认为它至少可以完成你的要求。从我得到的,你想按区域分组,然后建立类型。在每个组中,您需要每月销售的建筑类型的最大金额以及售价的百分比。 “据我所知,”所售价格的百分比“完全不明确(除非我遗漏了什么)所以我认为这意味着特定区域内给定建筑类型的百分比构成该月该组的销售额。如果这些假设的任何部分都是错误的,那就这么说吧。这就是我得到的:
DECLARE @RealEstate TABLE
(
MLSNo CHAR(8)
, Area CHAR(3)
, ListPrice INT
, [Contract] DATE
, PriceSold INT
, DateSold DATE
, BuildingType VARCHAR(50)
);
INSERT @RealEstate
VALUES ('N1959472', 'N11', 329500, '20100920', 329500, '20100920', 'Semi-Detac')
, ('N1990464', 'N11', 339000, '20101108', 339000, '20101108', 'Apt')
, ('N1990465', 'N11', 331350, '20101124', 331350, '20101124', 'Apt')
, ('N1990465', 'N11', 359840, '20100313', 359840, '20100313', 'Detac')
, ('N1990465', 'N11', 351230, '20100320', 351230, '20100320', 'Other Building')
, ('N1990468', 'N11', 376590, '20100328', 376590, '20100328', 'Outhouse')
, ('N1990468', 'N11', 374838, '20100315', 374838, '20100315', 'Detac')
, ('N1990469', 'N11', 351976, '20100328', 351976, '20100328', 'Detac')
, ('N1990470', 'N11', 348901, '20100303', 348901, '20100303', 'Other Building')
, ('N1990471', 'N11', 101685, '20100516', 101685, '20100516', 'Other Building')
, ('N1990472', 'N11', 359875, '20100909', 359875, '20100909', 'Apt');
DECLARE @Year INT = 2010;
WITH Aggregated AS
(
SELECT
Area
, BuildingType
, DATENAME(MONTH, DateSold) AS NameOfMonth
, PriceSold
--, MAX(PriceSold) OVER(PARTITION BY Area, BuildingType, DATENAME(MONTH, DateSold)) AS MaxForMonth
, CAST((CAST(PriceSold AS DECIMAL) / (SUM(PriceSold) OVER(PARTITION BY Area, DATENAME(MONTH, DateSold))) * 100) AS INT) AS PercentageOfPriceSold
FROM @RealEstate
WHERE YEAR(DateSold) = @Year
)
, PivotedMax AS
(
SELECT
Area
, BuildingType
, ISNULL(January, 0) AS MaxSoldInJanuary
, ISNULL(February, 0) AS MaxSoldInFebruary
, ISNULL(March, 0) AS MaxSoldInMarch
, ISNULL(April, 0) AS MaxSoldInApril
, ISNULL(May, 0) AS MaxSoldInMay
, ISNULL(June, 0) AS MaxSoldInJune
, ISNULL(July, 0) AS MaxSoldInJuly
, ISNULL(August, 0) AS MaxSoldInAugust
, ISNULL(September, 0) AS MaxSoldInSeptember
, ISNULL(October, 0) AS MaxSoldInOctober
, ISNULL(November, 0) AS MaxSoldInNovember
, ISNULL(December, 0) AS MaxSoldInDecember
FROM Aggregated
PIVOT
(
MAX(PriceSold)
FOR NameOfMonth IN
(
[January]
, [February]
, [March]
, [April]
, [May]
, [June]
, [July]
, [August]
, [September]
, [October]
, [November]
, [December]
)
) Pivoted
)
, PivotedPercent AS
(
SELECT
Area
, BuildingType
, ISNULL(January, 0) AS PercentageOfSalesInJanuary
, ISNULL(February, 0) AS PercentageOfSalesInFebruary
, ISNULL(March, 0) AS PercentageOfSalesInMarch
, ISNULL(April, 0) AS PercentageOfSalesInApril
, ISNULL(May, 0) AS PercentageOfSalesInMay
, ISNULL(June, 0) AS PercentageOfSalesInJune
, ISNULL(July, 0) AS PercentageOfSalesInJuly
, ISNULL(August, 0) AS PercentageOfSalesInAugust
, ISNULL(September, 0) AS PercentageOfSalesInSeptember
, ISNULL(October, 0) AS PercentageOfSalesInOctober
, ISNULL(November, 0) AS PercentageOfSalesInNovember
, ISNULL(December, 0) AS PercentageOfSalesInDecember
FROM Aggregated
PIVOT
(
MAX(PercentageOfPriceSold)
FOR NameOfMonth IN
(
[January]
, [February]
, [March]
, [April]
, [May]
, [June]
, [July]
, [August]
, [September]
, [October]
, [November]
, [December]
)
) Pivoted
)
SELECT
PivotedMax.Area
, PivotedPercent.BuildingType
, PivotedMax.MaxSoldInJanuary
, PivotedPercent.PercentageOfSalesInJanuary
, PivotedMax.MaxSoldInFebruary
, PivotedPercent.PercentageOfSalesInFebruary
, PivotedMax.MaxSoldInJanuary
, PivotedPercent.PercentageOfSalesInMarch
, PivotedMax.MaxSoldInMarch
, PivotedPercent.PercentageOfSalesInApril
, PivotedMax.MaxSoldInApril
, PivotedPercent.PercentageOfSalesInMay
, PivotedMax.MaxSoldInMay
, PivotedPercent.PercentageOfSalesInJune
, PivotedMax.MaxSoldInJune
, PivotedPercent.PercentageOfSalesInAugust
, PivotedMax.MaxSoldInAugust
, PivotedPercent.PercentageOfSalesInSeptember
, PivotedMax.MaxSoldInSeptember
, PivotedPercent.PercentageOfSalesInOctober
, PivotedMax.MaxSoldInOctober
, PivotedPercent.PercentageOfSalesInJanuary
, PivotedMax.MaxSoldInNovember
, PivotedPercent.PercentageOfSalesInNovember
, PivotedMax.MaxSoldInDecember
, PivotedPercent.PercentageOfSalesInDecember
FROM PivotedMax
INNER JOIN PivotedPercent
ON PivotedPercent.Area = PivotedMax.Area
AND PivotedPercent.BuildingType = PivotedMax.BuildingType
样本数据全部用于一个区域,但对许多人来说应该可以正常工作。它也可以修改为按区域工作并取出建筑类型分组。希望有所帮助。