首页 > 解决方案 > 通过 SQL 中两个不同表的数据查找最高/最低值

问题描述

我是新手,我需要有关广告/营销机构数据库的帮助

我有两张表,一张是List_of_billboards,它有三列:Billboard_ID(PK)、Location 和 Type,第二张是Billboard_Ad_Campaigns,它有四列:Ad_ID(PK)、Cost_of_campaign、ID_of_client、Billboard_ID (FK)。

表的数据如下所示:

表格1:

Billboard_ID | Location     |  Type
BbID001      |    London    |  Digital
BbID002      |    Hayward   |  3D
BbID003      |    Las Vegas |  Painted
BbID004      |    New York  |  Painted

表2:

Ad_ID   |  Cost_of_campaign | ID_of_client | Billboard_ID
BbCID0001    $123               001            BbID001       
BbCID0002    $456               002            BbID002       
BbCID0003    $789               003            BbID003       
BbCID0004    $1234              003            BbID004       

如何找到某种类型的广告牌(3D、数字、彩绘等)的最高/最低成本?

例如,根据上述数据,成本最高的彩绘广告牌将是 BbID004(纽约一号)

标签: sqlsql-server

解决方案


使用窗口函数。对于最便宜的广告系列:

select b.*
from (select t2.*,
             row_number() over (partition by t1.type order by t2.cost_of_campaign asc) as seqnum
      from table1 t1 join
           table2 t2
           on t1.Billboard_ID = t2.Billboard_ID
     ) b
where seqnum = 1

推荐阅读