我正在为 MySQL 语句而苦苦挣扎,并希望在我接近时得到一些指导,但并不完全在那里。我有一个数据库,其中包含一个物业地址表和物业出租清单。财产地址与一个或多个区域相关,该表与一个地区表相关,然后与一个郊区表相关。
我正在尝试创建一个结果,该结果为我提供每个郊区每月的平均租金和卧室数量。
例如:
District Suburb Month YEAR YMD Bedrooms DataAverage 尼尔森小溪 01 2012 2012-01-01 00:00 1 190 尼尔森小溪 01 2012 2012-01-01 00:00 2 274 尼尔森小溪 01 2012 2012-01-01 00:00 3 341
然后我可以将其转换为如下表格:
平均租金
郊区床位 Jan-12 Feb-12 Mar-12 Apr-12 May-12 Jun-12 Jul-12 小溪 1 $150 $245 $160 $285 $135 $370 $350 2 $330 $340 $380 $310 $335 $345 $355 3 $350 $380 $310 $395 $380 $350 $350 内城 1 $160 $245 $260 $285 $295 $300 $350 2 $360 $440 $480 $410 $535 $545 $555 3 $370 $480 $510 $595 $480 $450 $550
我当前的 SQL 查询是这样的:
SELECT d.name as District, s.name AS Suburb,
FROM_UNIXTIME(l.StartDate,'%m') AS Month,
FROM_UNIXTIME(l.StartDate,'%Y') AS YEAR,
FROM_UNIXTIME(l.StartDate, '%Y-%m-01 00:00') AS YMD,
p.Bedrooms,
REPLACE(FORMAT(AVG(l.RentPerWeek),0),',','') AS DataAverage
FROM properties p
LEFT JOIN listings l on l.property_id=p.id
LEFT JOIN regions r on p.region_id=r.id
LEFT JOIN districts d on d.region_id=r.id
LEFT JOIN suburbs s on s.district_id=d.id
WHERE FROM_UNIXTIME(l.StartDate) BETWEEN DATE(NOW()) - INTERVAL (DAY(NOW()) - 1) DAY - INTERVAL 11 MONTH AND NOW()
GROUP BY District, Suburb, Year, Month, Bedrooms
ORDER BY District, Suburb ASC, YMD ASC, Bedrooms ASC
不幸的是,我得到的是每个郊区的相同结果。我想我可能需要创建一个子查询 SQL 语句才能使其正常工作,但我并不完全确定。
所以我得到这样的东西:
District Suburb Month YEAR YMD Bedrooms DataAverage 尼尔森小溪 01 2012 2012-01-01 00:00 1 190 尼尔森小溪 01 2012 2012-01-01 00:00 2 330 尼尔森小溪 01 2012 2012-01-01 00:00 3 350 尼尔森小溪 02 2012 2012-02-01 00:00 1 245 尼尔森小溪 02 2012 2012-02-01 00:00 2 340 尼尔森小溪 02 2012 2012-02-01 00:00 3 380 ... 尼尔森内城 01 2012 2012-01-01 00:00 1 190 尼尔森内城 01 2012 2012-01-01 00:00 2 330 尼尔森内城 01 2012 2012-01-01 00:00 3 350 尼尔森内城 02 2012 2012-02-01 00:00 1 245 尼尔森内城 02 2012 2012-02-01 00:00 2 340 尼尔森内城 02 2012 2012-02-01 00:00 3 380 。ETC。
平均租金
郊区床位 Jan-12 Feb-12 Mar-12 Apr-12 May-12 Jun-12 Jul-12 小溪 1 $150 $245 $160 $285 $135 $370 $350 2 $330 $340 $380 $310 $335 $345 $355 3 $350 $380 $310 $395 $380 $350 $350 内城 1 $150 $245 $160 $285 $135 $370 $350 2 $330 $340 $380 $310 $335 $345 $355 3 $350 $380 $310 $395 $380 $350 $350
任何指示或帮助将不胜感激。