「SQL面试题库」 No_112 矩形面积

2023-10-16 10:48:02 浏览数 (2)

今日真题

题目介绍: 矩形面积 rectangles-area

难度中等

SQL架构

表:

代码语言:javascript复制
Points
代码语言:javascript复制
 --------------- --------- 
| Column Name   | Type    |
 --------------- --------- 
| id            | int     |
| x_value       | int     |
| y_value       | int     |
 --------------- --------- 
id 是该表主键.
每个点都表示为二维空间 (x_value, y_value).

写一个 SQL 语句, 报告由表中任意两点可以形成的所有可能的矩形.

结果表中的每一行包含三列 (p1, p2, area) 如下:

  • p1p2 是矩形两个对角的 id 且 p1 < p2.
  • 矩形的面积由列 area 表示.

请按照面积大小降序排列,如果面积相同的话, 则按照 p1 和 p2 升序对结果表排序

``` Points 表: ---------- ------------- ------------- | id | x_value | y_value | ---------- ------------- ------------- | 1 | 2 | 8 | | 2 | 4 | 7 | | 3 | 2 | 10 | ---------- ------------- -------------

Result 表: ---------- ------------- ------------- | p1 | p2 | area | ---------- ------------- ------------- | 2 | 3 | 6 | | 1 | 2 | 2 | ---------- ------------- -------------

p1 应该小于 p2 并且面积大于 0. p1 = 1 且 p2 = 2 时, 面积等于 |2-4| * |8-7| = 2. p1 = 2 且 p2 = 3 时, 面积等于 |4-2| * |7-10| = 6. p1 = 1 且 p2 = 3 时, 是不可能为矩形的, 因为面积等于 0. ```

代码语言:javascript复制
sql
select a.id P1,b.id P2,abs(a.x_value-b.x_value)*abs(a.y_value-b.y_value) as area
from Points a,Points b
where a.id<b.id and a.x_value != b.x_value and a.y_value != b.y_value
order by area desc,P1 ,P2
  • 已经有灵感了?在评论区写下你的思路吧!

0 人点赞