我有2代表“房间” &“建设”获取最大价值
我想获得最大(roomPrice)评为“全面大厦成交价”通过构建分组名称。我知道应该有一个子查询来从roomPrice中获取值,所以max(roomprice)会起作用,但我无法做到这一点。
Table1 (roomNo, buildingNo, roomType, roomPrice)
Table2 (buildingNo, buldingName, buildingCity)
对不起,刚开始在SQL和书籍不告诉所有人。
我有2代表“房间” &“建设”获取最大价值
我想获得最大(roomPrice)评为“全面大厦成交价”通过构建分组名称。我知道应该有一个子查询来从roomPrice中获取值,所以max(roomprice)会起作用,但我无法做到这一点。
Table1 (roomNo, buildingNo, roomType, roomPrice)
Table2 (buildingNo, buldingName, buildingCity)
对不起,刚开始在SQL和书籍不告诉所有人。
试试这个方法:根据您想要的输出
select a.buildingNo,b.buildingName,b.buildingCity ,a.max_room_price from
(select buildingNo,max(roomPrice) as max_room_price from table1 GROUP BY buildingNo) as a
LEFT JOIN
(select buildingNo, buildingName,buildingCity from table2)as b
on a.buildingNo = b. buildingNo
这一个工作正常。 希望它有助于
试试这个还有:
SELECT t2.buildingName as 'Building Name', MAX(t1.roomPrice) AS 'Total Building Price'
FROM Table2 t2
INNER JOIN Table1 t1 ON t1.buildingNo = t2.buldingNo
GROUP BY t2.buildingName
,如果你想在整个建筑的总和试试这个
SELECT tab1.buildingNo, MAX(tab1.roomPrice)
FROM tab1 JOIN tab2 ON tab1.buildingNo = tab2.buildingNo
GROUP BY tab1.buildingNo
,使用此
SELECT tab1.buildingNo, SUM(tab1.roomPrice)
FROM tab1 JOIN tab2 ON tab1.buildingNo = tab2.buildingNo
GROUP BY tab1.buildingNo
http://sqlfiddle.com/#!9/143c2/6
JOIN
将一个Table的每一行与另一个Table的所有行组合在一起。如果您使用ON
添加条件,则可以减少您获得的组合。在这种情况下,两个表上只有具有相同buildingNo
的行才会“粘”在一起。然后我们通过这个buildingNo
将它们分组,并且只接受roomPrice
的MAX
的一行或者简单地创建SUM
。
试试这个:
create table #Table2(buildingNo int, buldingName nvarchar(50), buildingCity varchar(50))
Insert into #Table2 values
(1,'A','Delhi'),
(2,'B','Delhi')
Create Table #Table1 (roomNo int, buildingNo int, roomType varchar(50), roomPrice int)
Insert into #Table1 values
(1,1,'2BHK',50000),
(2,2,'2BHK',60000),
(3,1,'1BHK',55000),
(4,2,'2BHK',65000),
(4,1,'2BHK',80000),
(4,2,'2BHK',90000)
SELECT max(roomPrice) AS [Total Building Price],buldingName FROM #Table1 t1
JOIN #Table2 t2
ON t1.buildingNo=t2.buildingNo
group by buldingName
你并不需要一个子查询,如果你只需要知道MAX(roomPrice):
SELECT tab2.buildingName, max(tab1.roomPrice) AS TotalBuildingPrice
FROM tab1
JOIN tab2 ON tab1.buildingNo = tab2.buildingNo
GROUP BY tab2.buildingName
但是你的问题表明总建筑价格,你实际上可能意味着max(sum()):
SELECT tab2.buildingName, sum(tab1.roomPrice) AS TotalBuildingPrice
FROM tab1
JOIN tab2 ON tab1.buildingNo = tab2.buildingNo
GROUP BY tab2.buildingName
ORDER BY TotalBuildingPrice DESC
LIMIT 1
好的建筑物1有3个房间,增加了最大房间价格2700.00和那些3房间不得不被添加到每个建筑物的最大值,对于不同值的2和3也是如此。我不知道我是否正确解释。 – Wombat
你可以附加你的表定义@Wombat吗? – jersoft