ER 图转 SQL 查询

Posted

技术标签:

【中文标题】ER 图转 SQL 查询【英文标题】:ER diagram to SQL query 【发布时间】:2021-03-08 19:08:42 【问题描述】:

在一次测试中,我被要求查询到

“显示所有未来租户的净有效租金 (NER)。此查询的结构应允许按省、市、物业、单元类型和 NER/ft2 进行进一步分析。做出任何必要的假设”。

为此我写了:

select T.rent*T.leaseterm+M.Charge_Amt*M.duration as NER
from tenant T 
join property P on T.property_ID = P.property_ID
join moveincharges M on M.tenant_ID = T.tenant_ID
join unit U on T.unit_ID = U.unit_ID
where T.status = 2;

有人告诉我这不是最佳答案。我是对的吗?我该如何改进解决方案?

*没有给出用于测试解决方案正确性的数据集或预期结果。提供的信息应足以制定解决方案。认为这是一个带回家的面试测试。

【问题讨论】:

请提供样本数据、预期结果和实际结果。 仅供参考:为了确保多级计算的安全,您应该在公式的每个部分周围使用括号,因为有时操作顺序会改变您的结果(并非总是但总是安全总比抱歉好)并且更容易阅读/理解您的意图 “允许按省、市、物业、单位类型和 NER/ft2 进行进一步分析。” 这些列在哪里? @Meruemu 但作为试图解决问题的人,您的第一步应该是设置一些示例数据(您自己)并确定您期望的结果,以便您知道查询何时有效。否则你怎么知道你解决了问题?然后你就可以自己回答这个问题了。 你可以随心所欲地争论——但我的建议不仅可以帮助你自己学习和回答问题,还可以帮助其他人帮助你。由你决定。你投入的越多,你就会得到越多。如果你不知道什么是正确的或最好的,那么你怎么知道有人为你提供了正确的答案?一遍又一遍。 【参考方案1】:

我在计算中没有看到任何使用 Property 或 Unit 表的情况。所以,我已经从查询中删除了这些。

select T.rent * T.leaseterm + M.Charge_Amt * M.duration as NER
from tenant T 
inner join moveincharges M on M.tenant_ID = T.tenant_ID
where T.status = 2;

您可能会得到 provice、city、property 和 unit_type 明智的平均 ner。

select  P.provice,p.city,p.property,u.unit_type,avg( T.rent*T.leaseterm+M.Charge_Amt*M.duration) as NER
from tenant T 
left join property P on T.property_ID = P.property_ID
inner join moveincharges M on M.tenant_ID = T.tenant_ID
left join unit U on T.unit_ID = U.unit_ID
where T.status = 2;
group by P.provice,p.city,p.property,u.unit_type

【讨论】:

最好在财产和单元上使用Left join,因为其中可能会在租户表中引用。 “此查询的结构应允许按省、市、财产、单位类型和 NER/ft2 进行进一步分析。”是我在查询中保留其他表的原因。是的,可能左连接更好. 如果此答案有助于解决您的问题,请采纳。

以上是关于ER 图转 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何把ARCGIS图转成CAD图

mysql如何根据er图创建二维表

Matlab图转pdf:测量精度

Java 彩色图转灰度图

gray灰度标签图转coco数据集

剪切板实现进程间持续抓图转显