Я пишу запрос к расширенной таблице «многие ко многим» в моей базе данных.Я называю это расширенной таблицей, потому что это таблица «многие ко многим» с дополнительным полем.Таблица отображает данные между таблицей полей и таблицей студентов.Таблица полей содержит потенциальные поля, которые студент может использовать, вроде системы контактов (например, имя, школа, адрес и т. Д.).Таблица студенческих значений, к которой мне нужно выполнить запрос, содержит идентификатор поля, идентификатор студента и ответ поля (т.е. studentid = 1; fieldid = 2; response = Dave Long).
Итак, моя таблица выглядит следующим образом:

Что мне нужно сделать, это взять несколько переданных значений и создать сгруппированный накопленный отчет.Я хотел бы сделать как можно больше в SQL.
Чтобы у меня были данные, сгруппированные по полю (идентификатор поля), накопительное поле (идентификатор поля) и мне нужно сгруппироватьстуденты по группам по полям, а затем в каждой группе подсчитывают количество студентов в совокупных полях.
Так, например, у меня есть эти данные
ID STUDENTID FIELDID RESPONSE
1 1 2 *(city)* Wallingford
2 1 3 *(state)* CT
3 2 2 *(city)* Wallingford
4 2 3 *(state)* CT
5 3 2 *(city)* Berlin
6 3 3 *(state)* CT
7 4 2 *(city)* Costa Mesa
8 4 3 *(state)* CA
Я надеюсь написать одинзапрос, который я могу сгенерировать отчет, который выглядит следующим образом:
CA - 1 Student
Costa Mesa 1
CT - 3 Students
Berlin 1
Wallingford 2
Это возможно сделать с одним оператором SQL или мне нужно получить все группы, а затем зациклить их?
РЕДАКТИРОВАТЬ Вот код, который я получил до сих пор, но он не дает надлежащего состояния Subtotal (stateSubtotal совпадает с citySubtotal)
SELECT state, count(state) AS stateSubtotal, city, count(city) AS citySubtotal
FROM(
SELECT s1.response AS city, s2.response AS state
FROM studentvalues s1
INNER JOIN studentvalues s2
ON s1.studentid = s2.studentid
WHERE s1.fieldid = 5
AND s2.fieldid = 6
) t
GROUP BY city, state