2017-10-05 49 views
1

“仅显示前两个建筑物及其对应的平均价格。”查找多行并显示最高AVG的AVG

任何帮助是极大的赞赏,我一直在努力的年龄,这是我最好的尝试(我认为),那么远,

SELECT BUILDINGNO.BUILDING, AVG(SESSIONPRICE.CONFERENCESESSION) 
FROM BUILDING 
JOIN CONFERENCESESSION ON BUILDINGNO.BUILDING = BUILDINGNO.CONFERENCESESSION 
WHERE BUILDINGNO.BUILDING = SESSIONPRICE.CONFERENCESESSION 
GROUP BY BUILDINGNO.BUILDING 
Order by BUILDINGNO.BUILDING DESC; 

干杯

+0

您使用的是哪个数据库? –

+1

如果以下任何答案对您有帮助或解决了您的问题,请注意并/或接受答案。这对未来的访问者会有帮助。 –

回答

1

您可以使用此。

SELECT TOP 2 BUILDINGNO.BUILDING, AVG(SESSIONPRICE.CONFERENCESESSION) 
FROM BUILDING 
JOIN CONFERENCESESSION ON BUILDINGNO.BUILDING = BUILDINGNO.CONFERENCESESSION 
WHERE BUILDINGNO.BUILDING = SESSIONPRICE.CONFERENCESESSION 
GROUP BY BUILDINGNO.BUILDING 
Order by AVG(SESSIONPRICE.CONFERENCESESSION) DESC; 
0

使用行数/限制..取决于数据库使用

SELECT BUILDINGNO.BUILDING, AVG(SESSIONPRICE.CONFERENCESESSION) 
FROM BUILDING 
JOIN CONFERENCESESSION ON BUILDINGNO.BUILDING = 
     BUILDINGNO.CONFERENCESESSION 
WHERE BUILDINGNO.BUILDING = SESSIONPRICE.CONFERENCESESSION 
    AND rownum <3 /*if you are using oracle */ 
GROUP BY BUILDINGNO.BUILDING 
Order by BUILDINGNO.BUILDING DESC; 
+0

我刚刚从您的查询中复制。 CONFERENCESESSION是表格中的一列吗?正在建造一个桌子? – Valli

0

要解决我必须知道哪些数据库您正在使用的问题。对于也就是说,如果你正在使用甲骨文RownumRowcount应该解决的问题。如果您正在使用SQL服务器,你应该使用TOP

我给MySQL的解决方案:

SELECT BUILDINGNO.BUILDING, AVG(SESSIONPRICE.CONFERENCESESSION) 
FROM BUILDING 
JOIN CONFERENCESESSION ON BUILDINGNO.BUILDING = BUILDINGNO.CONFERENCESESSION 
WHERE BUILDINGNO.BUILDING = SESSIONPRICE.CONFERENCESESSION 
GROUP BY BUILDINGNO.BUILDING 
Order by AVG(SESSIONPRICE.CONFERENCESESSION) DESC 
limit 2; 

对于Oracle和SQL Server,你可以分别执行@Valli & @sarslan的答案。

希望它有帮助!