Я пытаюсь выбрать МАКС СЧЕТА, группируя их по состоянию (поэтому по одному максимуму для каждого отдельного значения в состоянии). Функция подсчета работает как задумано.
SELECT c.id, c.name, t.name as type, COUNT(*) as count, c.state
FROM bookings_facilities f
JOIN bookings b
ON b.id = f.booking_id
JOIN clients c
ON c.id = b.client_id
JOIN client_types t
ON c.type = t.id
WHERE t.name = "School"
GROUP BY c.id
Вот результаты,
Я использую приведенный ниже оператор SQL, чтобы попытаться выбрать МАКСИМАЛЬНОЕ число, сгруппировав их по штатам.
SELECT *, MAX(z.count)
FROM (SELECT c.id, c.name, t.name as type, COUNT(*) as count, c.state
FROM bookings_facilities f
JOIN bookings b
ON b.id = f.booking_id
JOIN clients c
ON c.id = b.client_id
JOIN client_types t
ON c.type = t.id
WHERE t.name = "School"
GROUP BY c.id) z
GROUP BY z.state
Вот результаты,
3 состояния, которые появляются только один раз в result 1
, кажутся хорошими, но для состояния Selangor
, которое появляется дважды в первом результате, возникли некоторые проблемы.
Запрос SQL выбрал правильное значение MAX (Количество), равное 6, но вместо того, чтобы возвращать идентификатор как 1027, он возвращал идентификатор как 1002, который имеет только 1 в первом результате.
Я пробовал использовать разные наборы данных, но не могу получить подробную информацию о фактической строке MAX (Count).
Вот дизайн базы данных для справки
SQL Fiddle
Ожидаемый результат: (Нужно изменить только вывод второй строки).
Токовый выход Link