0

I have this data:

process_date    phrase    code    value
------------    ------    ----    -----
2018-12-21      ball      A       5
2018-12-21      ball      B       10
2018-12-21      ball      C       5
2018-12-20      ball      A       5
2018-12-20      ball      B       15
2018-12-19      ball      A       20
2018-12-19      ball      C       5
2018-12-18      ball      A       5
2018-12-18      ball      B       20
2018-12-17      ball      A       15
2018-12-17      ball      B       10
2018-12-17      ball      C       5

2018-12-21      car       A       15
2018-12-21      car       C       5
2018-12-20      car       A       5
2018-12-20      car       A       20
2018-12-20      car       C       10
2018-12-19      car       A       5
2018-12-18      car       A       10
2018-12-18      car       B       15
2018-12-17      car       A       20
2018-12-17      car       B       5

2018-12-21      bicycle   A       10
2018-12-21      bicycle   B       15
2018-12-20      bicycle   A       5
2018-12-18      bicycle   A       15
2018-12-18      bicycle   B       10
2018-12-17      bicycle   C       10

INFO:

  • there will be much more dates going back in the past for each day, but for simplicity of the example I've included only 5 days of data and only 3 phrases
  • There will never be a row with same date, phrase and code (unique key)

REQUEST:

I need to create a query that returns me the counts and sums for phrases groups that fulfill these conditions:

  • only include in the calculations the 3 most recent dates for which there is data in this table (in the example 2018-12-21, 2018-12-20 and 2018-12-19)
  • only those phrases that have had at least in 2 of the dates a row with value "A" and at least in 1 of the dates a row with code "B" (so "car" would not fulfil this condition because eventhough there was "A" in 2 of the last 3 dates, there was no row with value "B" in any of those 3 last dates)

IMPORTANT: Notice that in the example, there was no row for "bicycle" in 2018-12-19 , but that should not avoid this phrase from fulfilling the conditions

EXPECTED RETURN FROM QUERY:

phrase      A_count    A_sum    B_count    B_sum    C_count    C_sum
-------     -------    -----    -------    -----    -------    -----            
ball        3          30       2          25       2          10
bicycle     2          15       1          15       0          0

Thank you!

Rick James
  • 135,179
  • 13
  • 127
  • 222
dodecafonico
  • 195
  • 1
  • 10

0 Answers0