2015-04-12 97 views
0

下面是我想要做的事情的描述: 查看每個活動房產的房產名稱,「房間數量」,「最優每日價值」和「平均房價」(最佳每日價值假定所有。房間滿了,他們的基準利率收取)在SQL中你如何乘以count()?

這裏是我想出了srcipt,但它不工作,給出了一個錯誤:

SELECT p.property_name, 'numrooms' AS 'Number of Rooms', 
    'numrooms' * r.base_rate AS 'Optimal Daily Value', 
    AVG(r.base_rate) AS 'Average Rate' 
FROM property p, room r,(SELECT COUNT(DISTINCT room_id) FROM room AS "numrooms" 
    GROUP BY p.property_name; 
+1

''numrooms''是一個字符串文字。 'numrooms'是一個標識符/列別名。 – Mat

+0

請在「不工作」部分添加更多信息。你不希望它返回的結果是什麼? – dasblinkenlight

+2

'AS'房間數''無效(標準)SQL。標識符需要用雙引號,而不是單引號 –

回答

1

我猜對了一些列名。

SELECT p.property_name, 
COUNT(1) AS [Number of Rooms], 
SUM(r.base_rate) AS [Optimal Daily Value], 
AVG(r.base_rate) AS [Average Rate] 
FROM property p 
INNER JOIN room r 
ON p.id = r.propertyId 
GROUP BY p.property_name 
ORDER BY p.property_name 

根據您的SQL品牌,列別名可能必須有所不同。

0

根據您所提供的細節,我相信像這樣的東西可能會接近你實際尋找的東西,但我不確定你可以理解你的查詢產生的數據:

SELECT 
    p.property_name 
    , numrooms.rooms AS [Number of Rooms] 
    , numrooms.rooms * r.base_rate AS [Optimal Daily Value] 
    , AVG(r.base_rate) AS [Average Rate] 
FROM property p 
    , room r 
    , (SELECT COUNT(DISTINCT room_id) AS rooms FROM room GROUP BY p.property_name) numrooms 

但我的建議是發佈更多細節,什麼都在房間和屬性表的主鍵/外鍵,以便將carthesian加入正在通過枚舉表完成後FROM可以更有效JOIN被替換秒。