Получить все значения из столбцов с дубликатами
У меня есть SQL-запрос к таблице резервирования (атрибуты: имя, день, начало, конец), который находит повторяющиеся значения для атрибута days:
SELECT day, COUNT(day) as NumberOfTimes
FROM reservation group by day HAVING (COUNT(day)>1)
ORDER BY NumberOfTimes
Но он возвращает только день и количество раз, которое этот день указан в таблице бронирования. Я пытаюсь получить возврат, чтобы перечислить все имена, перечисленные за этот день, но у меня возникли проблемы с группировкой запроса. Как я должен подойти к этому, я хочу, чтобы возвращение выглядело так:
BOB MONDAY 3
JOHN MONDAY 3
STEVE MONDAY 3
ALICE WEDNESDAY 2
MARTIN WEDNESDAY 2
Спасибо за ваше время!
2 ответа
Вы не можете добавить столбец для имени
SELECT
name,
day,
COUNT(day) as NumberOfTimes
FROM reservation
group by name , day
HAVING (COUNT(day) > 1)
ORDER BY NumberOfTimes
Вы можете использовать подзапрос, который позволит вам добавить больше столбцов, которые не включены в GROUP BY
:
select r1.name,
r2.day,
r2.NumberOfTimes
from reservation r1
inner join
(
SELECT day, COUNT(day) as NumberOfTimes
FROM reservation
group by day
HAVING (COUNT(day)>1)
) r2
on r1.day = r2.day
order by NumberOfTimes
Если вам нужно только имя в качестве дополнительного столбца, вы можете использовать:
SELECT name, day, COUNT(day) as NumberOfTimes
FROM reservation
group by day, name
HAVING (COUNT(day)>1)
order by NumberOfTimes