В качестве примера я сейчас использую следующее.
query = """
SELECT reltuples
AS approximate_row_count
FROM pg_class
WHERE relname = 'table';
"""
query
|> Repo.query!()
|> Map.get(:rows)
|> List.flatten()
|> List.first()
|> trunc()
Выполняет запрос, получает результат
%Postgrex.Result{
columns: ["approximate_row_count"],
command: :select,
connection_id: 17152,
messages: [],
num_rows: 1,
rows: [[1494644.0]]
}
выбирает строки [[1494644.0]]
сглаживает список [1494644.0]
получает первую запись 1494644.0
и преобразует ее в целое число 1494644
Я чувствую себя отдельно от последней шаг, должен быть более короткий путь для этого. Но я еще не нашел это. Обратите внимание, что я не ищу способ выполнить этот простой запрос в виде экто-запроса, а скорее в виде необработанного sql. Потому что я использую гораздо более сложные запросы с той же проблемой.