У меня в качестве примера БД Fiddle: https://www.db -fiddle.com / f / vX7yFVk8j6FPTSm2QVoPNE / 2
Я пытаюсь выяснить, как найти все заказы нагость, который забронировал одну комнату несколько раз на разные даты.Я не могу использовать статическое значение / переменную типа bookings.check_in_date = '2018-03-05'
, bookings.guest_id = 001
или использовать подзапросы.
Я пытался:
SELECT bookings.guest_id, bookings.room_number, bookings.check_in_date, bookings.check_out_date
FROM bookings
GROUP BY bookings.guest_id, bookings.room_number, bookings.check_in_date, bookings.check_out_date
HAVING count(distinct bookings.check_in_date) >= 2;
Однако, это не дает мне результатЯ ищу, но скорее ищу это в результате:
guest_id, room_number, check_in_date, check_out_date
1, 203, 2018-03-01T00:00:00.000Z, 2018-03-07T00:00:00.000Z
1, 203, 2018-03-14T00:00:00.000Z, 2018-03-21T00:00:00.000Z
Схема (PostgreSQL v10.0)
CREATE TABLE guests (
id integer,
name text,
address text,
city text,
state text,
postal_code integer,
phone_number numeric(10)
);
CREATE TABLE rooms (
room_number integer,
floor_number integer,
view boolean,
bed_type text
);
CREATE TABLE bookings (
id integer,
guest_id integer,
room_number integer,
order_date date,
check_in_date date,
check_out_date date
);
INSERT INTO guests (id, name, address, city, state, postal_code, phone_number)
VALUES
(1, 'John', '5 8th Avenue', 'New York', 'New York', 10001, 2021110190),
(2, 'Jane', '13 Wall St', 'New York', 'New York', 10001, 1112020190),
(3, 'Jim', '12 Water St', 'New York', 'New York', 10001, 3332224444),
(4, 'Fang', '12 Broadway', 'New York', 'New York', 10001, 1234567890),
(5, 'Bruce', '123 1st Ave', 'New York', 'New York', 10001, 9871112222);
INSERT INTO rooms (room_number, floor_number, view, bed_type)
VALUES
(101, 1, FALSE, 'King'),
(102, 1, FALSE, 'Queens'),
(203, 2, FALSE, 'Queens'),
(204, 2, TRUE, 'King'),
(409, 4, TRUE, 'King');
INSERT INTO bookings (id, guest_id, room_number, order_date, check_in_date, check_out_date)
VALUES
(18001, 001, 203, '2018-03-05', '2018-03-01', '2018-03-07'),
(18002, 001, 203, '2018-03-05', '2018-03-14', '2018-03-21'),
(18003, 001, 409, '2018-03-05', '2018-11-27', '2018-11-30'),
(18004, 001, 204, '2018-03-05', '2018-11-27', '2018-11-30'),
(18007, 002, 409, '2018-05-05', '2018-05-05', '2018-05-12'),
(18002, 002, 203, '2018-03-05', '2018-03-14', '2018-03-21'),
(18006, 002, 409, '2018-06-05', '2018-07-04', '2018-07-07'),
(18005, 003, 409, '2018-06-05', '2018-08-05', '2018-08-12'),
(18008, 004, 409, '2018-09-05', '2018-09-05', '2018-09-12');