ผลรวมของข้อมูล 12 เดือนที่ผ่านมา โดยแต่ละเดือนมีข้อมูล Spark SQL จำนวน 2 แถว

ดังนั้นชุดข้อมูลของฉันจึงมีสองคอลัมน์ หนึ่งคอลัมน์สำหรับวันที่ (ที่มีเดือนเริ่มต้นและวันที่สิ้นสุดเดือน) คอลัมน์ที่สองประกอบด้วยการนับ

1-Nov-18    58
30-Nov-18   76
1-Dec-18    93
31-Dec-18   57
1-Jan-19    62
31-Jan-19   78
1-Feb-19    87
28-Feb-19   75
1-Mar-19    54
31-Mar-19   59
1-Apr-19    76
30-Apr-19   79
1-May-19    81
31-May-19   80
1-Jun-19    71
30-Jun-19   52
1-Jul-19    75
31-Jul-19   57
1-Aug-19    76
31-Aug-19   76
1-Sep-19    63
30-Sep-19   57
1-Oct-19    81
30-Oct-19   84
and so on..

ฉันต้องการผลลัพธ์ของฉันเป็น

ต.ค. 2019 1707

โดยพื้นฐานแล้วสำหรับเดือนตุลาคม 2019 ฉันต้องการผลรวมสำหรับการนับสำหรับบันทึกตั้งแต่เดือนพฤศจิกายน 18 ถึงตุลาคม 19 (12 เดือนที่ผ่านมา) เช่นเดียวกันสำหรับเดือนพฤศจิกายน 2019 ฉันต้องการผลรวมของบันทึกทั้งหมดตั้งแต่เดือนธันวาคม 18 ถึงพฤศจิกายน 19 และต่อๆ ไปในเดือนอื่นๆ


person HunTer    schedule 13.11.2019    source แหล่งที่มา


คำตอบ (2)


ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือ Group By ข้อที่มีการนับที่เลือก ฉันไม่สามารถให้คำตอบที่สมบูรณ์แบบแก่คุณได้เนื่องจากฉันต้องการข้อมูลเพิ่มเติมเกี่ยวกับสคีมาของคุณ... ชื่อฐานข้อมูล ตารางฐานข้อมูล ชื่อคอลัมน์ของคุณคืออะไร...

SELECT `dateField`,SUM(`countField`)
    FROM `TableName`
    GROUP BY `dateField`;

คุณยังสามารถจัดกลุ่มตามเดือนได้ดังนี้:

GROUP BY YEAR('dateField`), MONTH(`dateField`)
person Sari Rahal    schedule 13.11.2019

ฉันคิดว่าคุณต้องการการรวมและฟังก์ชั่นหน้าต่างด้วย RANGE:

select date_trunc(date, 'MM') as mon, SUM(cnt) as month_cnt,
       SUM(SUM(cnt)) OVER (ORDER BY MIN(date)
                           RANGE BETWEEN INTERVAL 11 MONTH PRECEDING AND CURRENT ROW
                          ) as running_12_months
from t
group by date_trunc(date, 'MM');
person Gordon Linoff    schedule 13.11.2019