Учитывая таблицу как;
+----+----------+
| id | modality |
+----+----------+
| 1 | CT |
| 1 | SC |
| 1 | MR |
| 1 | CT |
| 2 | SC |
| 3 | CT |
| 3 | CT |
| 3 | MR |
| 4 | MR |
| 4 | CT |
+----+----------+
Что-то вроде;
SELECT AVG(modality_count)
FROM (
SELECT id, COUNT(modality) AS modality_count
FROM TABLE
GROUP BY id
) a
Получит среднее количество модальностей на пациента и выдаст что-то вроде:
+---------------------+
| AVG(modality_count) |
+---------------------+
| 1.4 |
+---------------------+
следующий запрос:
SELECT CONCAT(CAST(COUNT(*) AS string), ' ' , modality) AS count_m
FROM TABLE
GROUP BY modality
получит счетчик количества строк для каждой модальности, например:
+---+---------+
| | count_m |
+---+---------+
| 1 | 560 CT |
| 2 | 2 SC |
| 3 | 473 MR |
+---+---------+
Допустим, есть 1035 строк, 726 уникальных идентификаторов и каждый идентификатор, вероятно, будет иметь 1,4 сканирования (либо CT, S C, MR). Как бы вы получили среднее число CT / MT / S C?
желаемый вывод что-то вроде:
+----------+---------+
| modality | AVG(id) |
+----------+---------+
| CT | 0.77 |
| SC | 0.003 |
| MR | 0.65 |
+----------+---------+
Заранее спасибо