PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Заявка за избор на множество данни заедно със средни стойности между определено време с помощта на Postgres

Можете да конвертирате avg_aa с bigint или двойна точност. Първо извадете идентификатора и името от полето за име, след което изчислете средната стойност по идентификатор и дата.

-- PostgreSQL(v11)
    WITH cte_t AS (
     SELECT LEFT(name, 1) id
          , RIGHT(name, POSITION('.' IN REVERSE(name)) - 1) t_name
          , value
          , time_stamp
     FROM test
)
SELECT id
          , time_stamp :: DATE "date"
          , AVG(CASE WHEN t_name = 'aa' THEN value END) :: BIGINT "avg(aa)"
          , AVG(CASE WHEN t_name = 'bb' THEN value END) :: BIGINT "avg(bb)"
          , AVG(CASE WHEN t_name = 'cc' THEN value END) :: BIGINT "avg(cc)"
     FROM cte_t
     GROUP BY id, time_stamp :: DATE
     ORDER BY "date", id;

Моля, проверете от url https://dbfiddle.uk/?rdbms=postgres_11&fiddle=8113ce4fd19ccd5757>d50ccd286

Използвайте двойна точност в средната колона

-- PostgreSQL(v11)
WITH cte_t AS (
     SELECT LEFT(name, 1) id
          , RIGHT(name, POSITION('.' IN REVERSE(name)) - 1) t_name
          , value
          , time_stamp
     FROM test
)
SELECT id
          , time_stamp :: DATE "date"
          , AVG(CASE WHEN t_name = 'aa' THEN value END) :: DOUBLE PRECISION "avg(aa)"
          , AVG(CASE WHEN t_name = 'bb' THEN value END) :: DOUBLE PRECISION "avg(bb)"
          , AVG(CASE WHEN t_name = 'cc' THEN value END) :: DOUBLE PRECISION "avg(cc)"
     FROM cte_t
     GROUP BY id, time_stamp :: DATE
     ORDER BY "date", id;

Моля, проверете от url https://dbfiddle.uk/?rdbms=postgres_11&fiddle=c788b828008b3ffe3f7e




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Генериране на модели за Flask-AppBuilder с помощта на flask-sqlqcodegen

  2. Как да създавате и изтривате бази данни и таблици в PostgreSQL

  3. Защо null||null връща нулева стойност, но concat(null,null) връща празен низ в postgres?

  4. PostgreSQL връща набор от резултати като JSON масив?

  5. Как да инсталирам PLV8 на Windows?