Re: Need help building this query - Mailing list pgsql-sql

From Oliver d'Azevedo Christina
Subject Re: Need help building this query
Date
Msg-id B1D3040823F54737AA98F53133DB25A2@Moon
Whole thread Raw
In response to Need help building this query  (Rihad <rihad@stream.az>)
List pgsql-sql
If I understand correctly,

You have table A with a record for each operation performed, perhaps 
duplicated.
And you have table B with one record for each operation completed,
Is my understanding correct?

I fail to understand what is the report you are trying to obtain, exactly.

For example,
This line
>> TableA.date_of_op  TableB.date_of_op
>> 2012-06-21            2012-06-20            [count(*) and sum(amount) of 
>> all data in TableA matched in TableB for the 20-th]

Does it mean that you have operations records in table A from day 21 that 
match records from table B for day 20?
The operations shouldn't have already been completed and, thus, without any 
record on table A ...?

Could you please kindly elucidate me?

Thank you

Best,
Oliver

----- Original Message ----- 
From: "Oliver d'Azevedo Christina" <oliveiros.cristina@asperger-talents.com>
To: "Rihad" <rihad@stream.az>; <pgsql-sql@postgresql.org>
Sent: Thursday, June 21, 2012 7:50 PM
Subject: Re: [SQL] Need help building this query


> For matching triples (foo, bar, baz) the date in table B shouldnt always 
> be after any date in table A, as table B contains complete operations?
>
>
>
> Best,
> Oliver
>
> ----- Original Message ----- 
> From: "Rihad" <rihad@stream.az>
> To: <pgsql-sql@postgresql.org>
> Sent: Thursday, June 21, 2012 6:48 PM
> Subject: [SQL] Need help building this query
>
>
>> Hi, folks. I currently need to join two tables that lack primary keys, 
>> and columns used to distinguish each record can be duplicated. I need to 
>> build statistics over the data in those tables. Consider this:
>>
>>
>> TableA:
>> row 1: foo: 123, bar: 456, baz: 789, amount: 10.99, date_of_op: date
>> row 2: foo: 123, bar: 456, baz: 789, amount: 10.99, date_of_op: date
>> row 3: foo: 123, bar: 456, baz: 789, amount: 10.99, date_of_op: date
>>
>> TableB:
>> row 1: foo: 123, bar: 456, baz: 789, amount: 10.99, date_of_op: date
>>
>>
>> Columns foo + bar + baz are used to distinguish a performed "operation":
>> TableA.date_of_op isn't, because it can lag behind TableB.
>>
>> Not all different "operations" are in table B.
>> Table B is just there so we know which "operations" are complete, so to 
>> speak (happening under external means and not under any of my control).
>>
>> Now, for each operation (foo+bar+baz) in table A, only *one* row should 
>> be matched in table B, because it only has one matching row there.
>> The other two in TableA should be considered unmatched.
>>
>> Now the query should be able to get count(*) and sum(amount) every day 
>> for that day, considering that matched and unmatched operations should be 
>> counted separately. The report would look something like this:
>>
>> TableA.date_of_op  TableB.date_of_op
>> 2012-06-21            [empty]                  [count(*) and sum(amount) 
>> of all data in TableA for this day unmatched in TableB]
>> 2012-06-21            2012-06-20            [count(*) and sum(amount) of 
>> all data in TableA matched in TableB for the 20-th]
>> 2012-06-21            2012-06-19            [count(*) and sum(amount) of 
>> all data in TableA matched in TableB for the 19-th]
>>
>>
>> Can this awkward thing be done in pure SQL, or I'd be better off using 
>> programming for this?
>>
>> Thanks, I hope I could explain this.
>>
>> -- 
>> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-sql
>>
>
>
> -- 
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
> 



pgsql-sql by date:

Previous
From: "Oliver d'Azevedo Christina"
Date:
Subject: Re: Need help building this query
Next
From: rihad@stream.az
Date:
Subject: Re: Need help building this query