如何对共享相同值的行组中某些值的出现求和和计数

时间:2018-12-21 09:23:55

标签: mysql sql mariadb pivot-table

我有此数据:

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:

  • 过去的每一天都有更多的日期,但为简单起见,我仅包含5天的数据和3个词组
  • 永远不会有相同日期,词组和代码(唯一键)的行

请求:

我需要创建一个查询,以向我返回满足以下条件的短语组的计数和总和:

  • 仅在计算中包括此表中有数据的最近3个日期(在示例中为2018-12-21、2018-12-20和2018-12-19)
  • 仅那些在行中至少有2个日期具有值“ A”且行中至少有1个日期具有代码“ B”的短语(因此,“ car”将不满足此条件,因为即使最近3个日期中的2个出现“ A”,最近3个日期中的任何一个都不存在值“ B”的行)

重要提示:请注意,在示例中,2018-12-19中没有“自行车”行,但这不应避免该短语满足条件

期望从查询中返回

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

谢谢!

0 个答案:

没有答案