Я пытаюсь найти простое решение для first-n-per-group .
У меня есть таблица данных, даты первого столбца и остальные данные. Я хочу группировать на основе даты, так как допускается несколько записей на дату. Для второго столбца несколько чисел, но нужна запись FIRST .
В настоящее время я могу использовать агрегатную функцию MIN (), но она будет возвращать самое низкое значение, а не первое.
A B
01/01/2018 10
01/01/2018 15
02/01/2018 10
02/01/2018 2
02/01/2018 100
02/01/2018 20
03/01/2018 5
03/01/2018 2
Желаемый вывод
A B
01/01/2018 10
02/01/2018 10
03/01/2018 5
Текущие результаты с использованием MIN () - нежелательно
A B
01/01/2018 10
02/01/2018 2
03/01/2018 2
Жаль, что в Google Sheets нет агрегатной функции FIRST (), которая бы упростила это.
Я видел пару примеров использования Row Number и ArrayQuery, но это, похоже, не работает для меня. Существует около 5000 строк данных, поэтому мы стремимся обеспечить максимальную эффективность, и при этом не нужно пересчитывать весь лист при любых изменениях, каждая из которых занимает несколько секунд.
В настоящее время у меня есть это, которое добавляет третий столбец с номером строки:
=query({A1:B, arrayformula(row(A1:B))}, "select min(Col1),min(Col2) group by Col1")
Спасибо
РЕДАКТИРОВАТЬ 1
Предлагаемое решение было =SORTN(A:B,2^99,2,1,1)
, которое является простым и простым. Однако для этого требуется большой диапазон «свободного пространства» для отображения возвращенного набора данных. Представьте себе 3000+ строк.
Я надеялся на решение, основанное на QUERY()
, так как я хотел сделать дальнейшие операции с результатами. В частности, подсчитайте вхождения различных значений.
Например: я хотел вернуть набор данных
A B
01/01/2018 10
02/01/2018 10
03/01/2018 5
И все же я хочу посчитать вхождения этих значений (а затем игнорировать даты). Например:
B C
10 2
5 1
Возможно, я запутал ситуацию, используя цифры? «данные» в ColB - это TEXT (короткие 3-буквенные коды), однако я использовал цифры, чтобы показать, что не могу использовать функцию MIN (), поскольку она возвращает наименьшее числовое значение.
Итак, вкратце:
- Пройти все строки (более 3000 строк) и сгруппировать по ПЕРВОЙ строке определенной даты
- возвращает ПЕРВОЕ значение этой строки
- COUNT () все уникальные вхождения этих первых значений, независимо от даты. Просто список с уникальными значениями и их количеством (опять же, только первый в любой конкретный день)