Jump to content
Sign in to follow this  
HRMT

Query PostgresSql

Recommended Posts

HRMT

Boas Pessoal,

Estou a desenvolver uma aplicação em JAVA, onde leio ficheiros csv's e guardo na BD.

O ficheiro contem contagens de um equipamento com a data e as respectivos valores das contagens de 15 em 15 min (por exemplo 20150104 - 00:15 - 32400 ). Como a ultima contagem do dia é as 24:00 horas a BD automaticamente grava no dia seguinte ás 00:00:00. Eu preciso de fazer o valor gasto de um dia, por exemplo do dia 2 de abril. A formula é o (valor do dia 2 às 24:00) - (valor do dia 1 às 24:00).

Eu tenho a seguinte query, mas assim não consigo pois ele multiplica-me os valores das 23:45 e não das 24:00. Se me puderem ajudar agradecia.

public static ResultSet genStat1v1(String nome,double factor, Connection c,String codigoEdificio,String codigoContador, String inicio, String fim, String periodoAgregacao, String tipoAgregacao, String zonaOuCategoria,boolean original,boolean eReal) {

boolean res = false;

//Connection c;

Statement stmt;

String valor;

if(original) valor = "valor"; else valor = "valor_corrigido";

try {

c = ConnectionManager.getConnection();

//System.out.println("Opened database successfully");

c.setAutoCommit(false);

stmt = c.createStatement();

Statement stmt2 = c.createStatement();

Statement stmt3 = c.createStatement();

Statement stmt4 = c.createStatement();

Statement stmt5 = c.createStatement();

Statement stmt6 = c.createStatement();

String queryReais

= "select wk,codigo_edificio,cc,res,res_euros,d.nome from (select (extract (" + periodoAgregacao + " from a.timestp)) as wk ,codigo_edificio,a.codigo_contador as cc," + tipoAgregacao + "(a.consumption) as res," + tipoAgregacao + "(a.consumption* getCustoKW(a.timestp)) as res_euros,b." + zonaOuCategoria + " from (SELECT "

+ " m1.codigo_contador, m1.timestp, "

+ " m1." + valor+ ", "

+ " COALESCE(m1." + valor+ " - (SELECT m2." + valor+ " "

+ "FROM leituras_contadores m2 "

+ "WHERE m2.codigo_edificio = '" + codigoEdificio + "' and m1.codigo_contador = m2.codigo_contador and m2.timestp = m1.timestp - time '00:15'), 0.0000) * "+factor +"AS consumption "

+ "FROM leituras_contadores m1 where codigo_edificio = '" + codigoEdificio + "' and ereal = 'true' and codigo_contador = '"+codigoContador+"' and (timestp >= timestamp '"+inicio+" 00:15' and timestp <= timestamp '"+fim+ " 23:45')) as a full outer join "

+ "(select * from contadores_reais where codigo_edificio = '" + codigoEdificio + "' and codigo_contador = '"+codigoContador+"') as b on a.codigo_contador = b.codigo_contador group by (extract (" + periodoAgregacao + " from a.timestp)),codigo_edificio,a.codigo_contador," + zonaOuCategoria + " "

+ "order by (extract (" + periodoAgregacao + " from a.timestp))) e inner join " + zonaOuCategoria + "s d on e." + zonaOuCategoria + " = d.codigo_" + zonaOuCategoria + ";";

Edited by HRMT

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.