需要用到SQL窗口函数:请提取出12月租赁价差大于10%的明细用于集中管理。呈现字段:房源编号、合同编号、签约日期、成交价、最后一次报盘价、价差。其中调价前价格和调价后价格在另一张表格中
时间: 2023-08-13 09:09:14 浏览: 57
好的,这是一个涉及到多张表格的SQL查询语句,我会尽可能清晰地给出答案。以下是我给出的SQL查询语句:
```
SELECT
a.house_number AS '房源编号',
a.contract_number AS '合同编号',
a.contract_date AS '签约日期',
b.price AS '成交价',
c.price AS '最后一次报盘价',
((b.price - c.price) / b.price) AS '价差'
FROM
contract_table AS a
JOIN price_table AS b ON a.house_number = b.house_number AND a.contract_number = b.contract_number
JOIN (
SELECT
house_number,
MAX(price_date) AS max_date
FROM
price_table
WHERE
price_date < '2022-01-01'
GROUP BY
house_number
) AS d ON b.house_number = d.house_number AND b.price_date = d.max_date
JOIN price_table AS c ON b.house_number = c.house_number AND d.max_date = c.price_date
WHERE
c.price / b.price < 0.9
AND a.contract_date >= '2021-12-01' AND a.contract_date < '2022-01-01'
```
在这个查询语句中,我们用到了以下几个表格:
- `contract_table`:租赁合同表格,包含了合同编号、合同签署日期、房源编号等字段。
- `price_table`:价格表格,包含了房源编号、价格、价格日期等字段。
查询语句的主要思路是:
1. 首先,我们通过 `JOIN` 连接 `contract_table` 和 `price_table` 表格,获取到每个合同的成交价。
2. 然后,我们需要获取每个房源的最后一次报盘价,这可以通过子查询和 `JOIN` 操作实现。具体来说,我们通过子查询找到每个房源的最后一次报盘日期,然后再通过 `JOIN` 连接 `price_table` 表格获取到最后一次报盘价。
3. 最后,我们计算出价差,并根据条件筛选出价差大于10%的明细,同时限定查询时间段为2021年12月。
希望这个查询语句能够帮助到您。如果您有任何疑问或者需要进一步解释,请随时告诉我。