加入两个表中的多个列

时间:2017-08-19 14:42:55

标签: mysql sql join

我有两张桌子。第一个表名为 price_changes ,而另一个表名为 area price_changes 的结构是:

**listing_id**  **old_price** **new_price** **change_date**
240509            180999        100234        2016-03-30
230599            165789        189760        2017-06-12
245678            123456        176432        2016-12-08

此处 listing_id old_price new_price 为整数,而 change_date 为正文。

下一个区域表格的结构如下:

**listing_id** **built_area**, **used_area** 
240509           340             0
230599           0               789
245678           125             175

此处 listing_id built_area used_area 都是整数值。

我想制作的Sql查询无法执行此操作:

计算2016年建成或使用面积增加的物业的平均平方米价格> 200.这里的平均平方米价格意味着将 built_area used_area 相加以形成一个名为 total_area 的新列,并且我必须使用的价格 increase_price 列。

我尝试使用嵌套查询来执行此操作但未成功。我提出的嵌套查询是

SELECT listing_id FROM fast_course_reg。price changes其中new_price> old_price和change_date 比如'2016%'和listing_id in (从built_area> 200或used_area> 200的区域中选择listing_id);

但问题是嵌套查询不允许在嵌套部分中添加多个列。使用Join,我不知道怎么做,因为内连接不允许从两个表中选择多个列。

1 个答案:

答案 0 :(得分:1)

获取2016年价格上涨的房产:

select listing_id, max(new_price)
from price_changes
where old_price < new_price and change_date >= '2016-01-01' and
      change_date < '2017-01-01'
group by listing_id;

然后,您可以将其用作子查询来获取平均值。结果是这样的:

select sum(new_price) / sum(built_area + used_area)
from (select listing_id, max(new_price) as new_price
      from price_changes
      where old_price < new_price and change_date >= '2016-01-01' and
            change_date < '2017-01-01'
      group by listing_id
     ) l join
     area a
     using (listing_id)
where built_area > 200 or used_area > 200;