我想要计算在一定范围内入住的人数。所以不到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