我想要計算在一定範圍內入住的人數。所以不到7晚,7至14晚,最後超過14晚。沒有來自SQL查詢的結果
我想輸出是這個樣子:
Range | Count
----------------------
<= 7 Nights | 3
8 - 14 Nights | 2
15 Nights + | 1
我使用MYSQL和嘗試以下兩種解決方案,但沒有結果似乎不斷出現。
SELECT
CASE
WHEN booking_num_nights <= 7 THEN '<= 7 Nights'
WHEN booking_num_nights > 7 and booking_num_nights <= 14 THEN '8 - 14 Nights'
WHEN booking_num_nights > 14 THEN '15 Nights +'
END AS range, count(*) AS count_num
FROM BOOKING
WHERE booking_property_id = :id
GROUP BY range
另一嘗試是如下:
SELECT booking_num_nights as range, count(*) as count_num
FROM (SELECT
CASE
WHEN booking_num_nights <= 7 THEN '<= 7 Nights'
WHEN booking_num_nights > 7 and booking_num_nights <= 14 THEN '8 - 14 Nights'
WHEN booking_num_nights > 14 THEN '15 Nights +'
END AS range
FROM BOOKING)
WHERE booking_property_id = :id
GROUP BY range
*「但沒有結果似乎永遠出現」 * - 這個描述非常模糊。你會得到空的結果,或者是一個錯誤?如果是這樣,請收集錯誤信息。對於另一種嘗試,你甚至沒有描述結果。另外,表格結構和示例數據也會有幫助,以及用於輸入變量':id'的值。 – GolezTrol 2014-11-08 18:28:41
我打印出來的JSON,當我輸出到error_log我看到我的列名稱,但沒有任何數據的任何兩次嘗試。 – chrisalex2 2014-11-08 18:30:40
如果沒有錯誤,但也沒有數據,問題不能在這種情況下,或分組。它是where子句過濾行。 where子句非常簡單,所以唯一的原因可能是你根本沒有爲':id'指定一個好的值,或者指定了一個與'booking_property_id'不匹配的值。 – GolezTrol 2014-11-08 18:32:27