Я не совсем уверен, как я могу собрать один запрос SQLite для достижения следующего. Я могу заставить кусочки работать, но, похоже, не может объединить все это в один.SQLite SELECT запрос через несколько столбцов с повторяющимися сгруппированными строками
У меня есть таблица, которая выглядит следующим образом (реальный набор данных несколько Гб):
| ID | ColumnA | ColumnB | ColumnC | ColumnD |
| 1 | 21 | 34 | 10 | 0.12654 |
| 2 | 21 | 34 | 20 | 0.25478 |
| 3 | 21 | 46 | 10 | 0.43564 |
| 4 | 21 | 46 | 20 | 1.02487 |
| 5 | 34 | 21 | 10 | 0.01476 |
| 6 | 34 | 21 | 20 | 0.87265 |
| 7 | 34 | 46 | 10 | 0.46478 |
| 8 | 34 | 46 | 20 | 0.13665 |
| 9 | 46 | 21 | 10 | 0.04189 |
| 10 | 46 | 21 | 20 | 0.91754 |
| 11 | 46 | 34 | 10 | 0.73688 |
| 12 | 46 | 34 | 20 | 0.24299 |
Эти данные генерируются вложенной сделай петлей для некоторого моделирования я делал.
Из этой таблицы мне по существу нужно извлечь таблицу, которая выглядит следующим образом, чтобы я мог нанести цвет/тепловую карту.
| ID | ColumnA | ColumnB | ColumnC | ColumnD |
| 1 | 21 | 34 | 10 | 0.12654 |
| 3 | 21 | 46 | 10 | 0.43564 |
| 5 | 34 | 21 | 10 | 0.01476 |
| 8 | 34 | 46 | 20 | 0.13665 |
| 9 | 46 | 21 | 10 | 0.04189 |
| 12 | 46 | 34 | 20 | 0.24299 |
Так что это позволит мне сделать цветовую палитру, основанную на значениях ColumnD с использованием 2D-массив (диагональ должен быть установлен равным нулю, так как значения Columna и ColumnB никогда не равны для данной строки, поэтому данные по диагонали нет в базе данных):
| 21 | 34 | 46
------------------
21 | 0 | |
------------------
34 | | 0 |
------------------
46 | | | 0
Мой вопрос заключается в основном, как я могу настроить один запрос агрегировать все данные, которые идут в 2D массив для создания палитры.
Важно отметить, что ColumnA и ColumnB в основном заполнены одним и тем же набором целых чисел. Я могу получить уникальный список целочисленных значений, используя DISTINCT. Я нашел несколько потоков SO о выборе DISTINCT для нескольких столбцов, однако ни один из примеров не показывает, как использовать агрегатор для выбора значений в других столбцах. В этом случае я хочу использовать min() для выбора самого низкого значения в ColumnD для каждой пары идентификаторов в ColumnA и ColumnB. Выбор DISTINCT в одном столбце не работает, потому что это координатная пара (ColumnA, ColumnB), которая отличается.
Любая помощь была бы принята с благодарностью!
Непонятно, как вы переходите от исходной таблицы к извлеченной таблице. Оба выглядят точно так же. Каковы ваши критерии? –
Извините, возможно, что потерялся в тексте. Критерии выбирают для каждой пары (ColumnA, ColumnB), минимальное значение для ColumnD. – kartikkumar