1

我正在为我的网站创建一份报告,我将在其中列出不同位置的房地产价格。我有一张如下表

创建表报告(report_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT NOT NULL,
                     地点 VARCHAR(255),
                     日期 VARCHAR(255),
                     ratepersqft INT);

我在表中的值如下

 INSERT INTO report(Locations, date, ratepersqft)
             VALUES('Location A', '2012-01-16', 2500),
                   ('Location B', '2012-01-21', 1750),
                   ('Location C', '2012-01-20', 1650),
                   ('Location C', '2012-02-19', 2100),
                   ('Location A', '2012-02-18', 2560),
                   ('Location B', '2012-02-12', 1790),
                   ('Location C', '2012-03-04', 2250),
                   ('Location A', '2012-03-25', 2680),
                   ('Location B', '2012-03-05', 2540),
                   ('Location A', '2012-08-21', 2870),
                   ('Location C', '2012-09-12', 2150),
                   ('Location B', '2012-10-18', 2760);

位置 | 月 | RatePerSqFt

 Location A     Jan              2500
 Location A     Feb              2560
 Location A     March            2680
 Location A     August           2870
 Location A     sept             2870
 Location A     oct              2870

 Location B     Jan              1750      
 Location B     Feb              1790  
 Location B     March            2540
 Location B     August           2540
 Location B     sept             2540
 Location B     oct              2760    

 Location C     Jan              1650      
 Location C     Feb              2100  
 Location C     March            2250
 Location C     August           2250
 Location C     sept             2250
 Location C     oct              2760

我想为表中所有可能的数据绘制值。如果您看到表位置 A 没有任何十月月份的条目。但是由于位置 B 有十月份的条目,我希望在输出表中输入位置 A 的最后登记月份八月的比率。

所以它显示为2870。

同样,位置 B 也没有 august 条目。但是由于位置 A 有 8 月的费率,我将位置 B 和上个月的费率填充为 2540。

C也是一样。

如何为上述内容编写查询或过程

4

2 回答 2

0

看起来分组是你要找的

SELECT Locations, date_format(date,'%b') as month, sum(ratepersqft) as rates 
FROM report GROUP BY Locations, month(date);

我不确定sum。可能是它应该是avg或别的什么。

于 2012-12-28T07:07:15.443 回答
0

这是SQLFiddle 演示

select Locations,year,month,
(select ratepersqft from report where 
        Locations=tl.locations
        and
        DATE_FORMAT(date,'%Y%m')<=tp.monthNum
        order by DATE_FORMAT(date,'%Y%m') desc
        limit 1) as t
       from
(select distinct Locations from report) tl,
(select distinct YEAR(date) year,
                 MONTHName(date) month,
                 DATE_FORMAT(date,'%Y%m') monthNum
                 from report) tp

order by Locations,monthNum
于 2012-12-28T07:38:03.727 回答