Имеется таблица, подобная следующей:
+----+-----------+------------------+
| id | diagnosis | diagnosis_age |
+----+-----------+------------------+
| 1 | 315.32000 | 2.18430371791803 |
| 1 | 315.32000 | 3.18430371791803 |
| 1 | 800.00000 | 2.18430371791803 |
| 2 | 315.32000 | 5.64822705794013 |
| 3 | 800.00000 | 5.68655778752176 |
| 3 | 120.12000 | 5.70572315231258 |
| 4 | 315.32000 | 5.72488851710339 |
| 4 | 315.32000 | 5.74405388189421 |
| 5 | 120.12000 | 5.7604813374292 |
| 6 | 315.32000 | 5.77993740687426 |
+----+-----------+------------------+
Каждый идентификатор может встречаться много раз, у каждого идентификатора может быть много диагнозов, у каждого идентификатора может быть много диагнозов, а каждая строка уникальна.
Я пытаюсь найти, у какого идентификатора самые разные диагнозы.
Что-то вроде:
SELECT id, COUNT(*) AS diagnosis_count
FROM diagnoses
GROUP BY id
ORDER BY diagnosis_count DESC
LIMIT 5;
Возвращает:
+------+-----------------+
| id | diagnosis_count |
+------+-----------------+
| 8 | 8557 |
| 99 | 7828 |
| 127 | 7592 |
| 39 | 6812 |
| 2173 | 6492 |
+------+-----------------+
Но это не так действительно решить мою проблему. Это работает, если вы определяете каждую строку как диагноз (что, я полагаю, вы могли бы, так как каждая строка уникальна). Если вместо этого вы хотите получить количество различных кодов диагностики для каждого идентификатора (идентификатор 1 будет иметь 2 различных кода диагностики, несмотря на наличие 3 строк), или, в качестве альтернативы, получить количество отдельных кодов диагностики для каждого идентификатора (идентификатор 4 будет иметь 2 различных диагноза), как бы вы go сделали это?
Заранее спасибо.