Как настроить дату в формате «ММ / ДД / ГГГГ» и «Процент» для следующего запроса - PullRequest
0 голосов
/ 05 сентября 2018

Вот мой запрос, и у меня замирает мысль о том, как преобразовать результаты, чтобы они отражали дату в формате «ММ / ДД / ГГГГ» и чтобы результаты выводились в процентах, а не в десятичном виде.

c.execute("""WITH num_requests AS (
             SELECT time::date AS day, count(*)
             FROM log
             GROUP BY time::date
             ORDER BY time::date
            ), num_errors AS (
             SELECT time::date AS day, count(*)
             FROM log
             WHERE status != '200 OK'
             GROUP BY time::date
             ORDER BY time::date
            ), error_rate AS (
             SELECT num_requests.day,
                num_errors.count::float / num_requests.count::float * 100
                AS error_pc
             FROM num_requests, num_errors
             WHERE num_requests.day = num_errors.day
            )
            SELECT * FROM error_rate WHERE error_pc > 1
        """)

1 Ответ

0 голосов
/ 05 сентября 2018

A Дата PostgreSQL форматируется по умолчанию как ГГГГ-ММ-ДД. Если дата хранится в виде строки в том же формате, вы можете typecast указать дату, так же, как вы использовали ::date. Имея это как дату, вы можете снова отформатировать его как текстовую строку, используя функцию to_char .

to_char(time::date,'mm/dd/yyyy')

Та же самая функция to_char поможет вам представить число в процентах. Однако, если число является процентной ставкой, а не процентом, вам необходимо выполнить умножение:

to_char(100*rate,'FM999.90"%"') AS pct

Однако я бы порекомендовал контролировать и выполнять форматирование из вашего основного языка (Java, Python и т. Д.). Я думаю, что это более чистый подход, чтобы оставить форматирование вне вашего SQL.

...