У меня есть таблица MySQL, содержащая записи о посещаемости.Соответствующие столбцы идентифицируют участников, сеансы и статус посещаемости (подтверждено / отклонено / нет ответа).У меня также есть вторая таблица, содержащая личную информацию участников, включая дату, когда они присоединились к группе.
Я пытаюсь создать отдельный запрос, который будет выводить список всех участников, количество посещений сессий.и их регулярность, выраженная в процентах сессий, которые они посетили (по отношению к общему количеству сессий).Проблема состоит в том, что общее количество сеансов должно содержать только сеансы с тех пор, как участник присоединился к группе.
Итак, для первой части мой запрос:
SELECT name, count(*)
FROM attendance, members
WHERE attendance.attend = 2 and
attendance.member_number = members.number
GROUP BY attendance.member_number, attendance.attend
HAVING count(*) > 0
ORDER BY count(*) desc
Это возвращает всех участников 'имена, а также количество сессий, которые каждый посетил.Однако я также хотел бы добавить этот третий столбец.
Таким образом, для каждой записи мне сначала нужно выяснить, какая была дата members.member_since, а затем запросить только группу записей о посещаемости для каждого участника., для которых даты больше, чем member_since, получают их счет, затем из этого подмножества получают счет, где acceeance.attend = 2, а затем вычисляют, какой процент от этого количества подмножеств представляет второй счет (для записей, имеющих посещаемость = 2).
Как мне написать свой запрос?
Данные выглядят так:
Члены таблицы:
number, name, join_date
001, Peter James, 2016-07-26
002, John Smith, 2014-06-04
Посещаемость ТАБЛИЦЫ:
member_number, attend, date
001, 2, 2019-05-11
001, 1, 2019-05-04
001, 2, 2019-04-26
001, 2, 2019-04-18
002, 2, 2014-08-01
002, 1, 2016-08-01
002, 1, 2019-05-04
Желаемым результатом было бы получить следующее:
Name, Attended, percentage
Peter James, 3, 75%
John Smith, 1, 14%
Другими словами, хотя было 6 сессий, Питер Джеймс был участником только в течение последних четырех и присутствовал на 3 из них (75%), хотя Джон Смит является участником с самого начала, поэтому его посещаемость составляет один из 6.
Структура несколько упрощена (есть таблица «сессий» с подробной информацией о ses).Сроки, включая дату, и таблица «посещаемость» ссылается на ключевой столбец «att_number», а не на фактическую дату), но суть та же.