【问题标题】:SQL: How do I select all of a column that have at least 2 of another column of a specific value? [using mariadb]SQL:如何选择具有至少 2 个特定值的另一列的所有列? [使用 mariadb]
【发布时间】:2020-05-23 03:23:40
【问题描述】:

所以我有一张这样的桌子,并且一直在尝试找出一种方法来选择所有拥有 > 1 个 type='double' 房间的 hotelNo。还没有想出一种方法来获得帮助。

MariaDB [hotel]> SELECT * FROM room;

+--------+---------+--------+-------+
| roomNo | hotelNo | type   | price |
+--------+---------+--------+-------+
|      1 |       1 | single |    80 |
|      1 |       2 | single |    90 |
|      1 |       3 | single |    80 |
|      1 |       4 | single |    80 |
|      1 |       5 | single |    80 |
|      1 |       6 | double |   100 |
|      1 |       7 | single |    80 |
|      2 |       1 | single |    80 |
|      2 |       2 | single |    80 |
|      2 |       3 | single |    80 |
|      2 |       4 | single |    80 |
|      2 |       5 | single |    80 |
|      2 |       6 | single |    80 |
|      2 |       7 | single |    80 |
|      3 |       1 | double |    95 |
|      3 |       2 | double |   100 |
|      3 |       3 | double |    95 |
|      3 |       4 | double |    95 |
|      3 |       5 | double |    95 |
|      3 |       7 | double |    95 |
|      4 |       1 | vip    |   120 |
|      4 |       2 | vip    |   120 |
|      4 |       3 | vip    |   120 |
|      4 |       4 | vip    |   120 |
|      4 |       5 | double |   100 |
|      5 |       1 | single |    85 |
|      5 |       2 | other  |   120 |
|      5 |       3 | other  |   110 |
|      5 |       4 | double |    95 |
|      5 |       5 | double |   100 |
+--------+---------+--------+-------+

30 行(0.001 秒)

我有:

MariaDB [hotel]> SELECT hotelNo, type, COUNT(*) FROM room GROUP BY type HAVING COUNT(*) > 2;

但这只是给了我每种房型的总数:

+---------+--------+----------+
| hotelNo | type   | COUNT(*) |
+---------+--------+----------+
|       1 | single |       14 |
|       6 | double |       10 |
|       1 | vip    |        4 |
+---------+--------+----------+

3 行(0.001 秒)

我想得到一个输出,显示哪个hotelNo 有两个以上的双人房。

【问题讨论】:

  • 你的预期输出是什么?

标签: sql group-by mariadb where-clause having-clause


【解决方案1】:

您想要拥有超过 1 间双人房的酒店。我建议过滤type = 'double',按hotelno 聚合,并使用having 子句来确保组中有多个记录:

select hotelno
from room
where type = 'double'
group by hotelno
having count(*) > 1

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 2013-01-02
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2022-01-13
    相关资源
    最近更新 更多