ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ(!) Π·Π°ΠΏΡΠΎΡΠΎΠΌ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π° test_tables (Π·Π°Π΄Π°Π½ΠΈΡ 1-4). ΠΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ(!) Π·Π°ΠΏΡΠΎΡΠΎΠΌ. Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΊ Π·Π°Π΄Π°Π½ΠΈΡΠΌ ΠΏΡΠΈΠ»Π°Π³Π°ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ 1) ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π±ΠΎΠ½Π΅Π½ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ (Π·Π²ΠΎΠ½ΠΊΠΈ/ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΠΈΠΈ/ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ/ΡΠΏΠΈΡΠ°Π½ΠΈΡ), ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ
ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΠΈΠΉ, ΡΡΠΌΠΌΡ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΡΡΠΌΠΌΡ ΡΠΏΠΈΡΠ°Π½ΠΈΠΉ. ΠΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠ³ΡΡΠΆΠ΅Π½Ρ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡΠΎΠΌ. 2) ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΈ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΠΈΠΈ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ
Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ² (Π²Π΅ΡΠ½ΡΡΡ Π΄Π²Π΅ Π·Π°ΠΏΠΈΡΠΈ). ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ: subs_Key, event_type, duration (Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΠΈΠΈ / Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°). 3) ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π±ΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ³ΡΡΠ·ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π±Π°Π»Π°Π½ΡΠ° (ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ / ΡΠΏΠΈΡΠ°Π½ΠΈΡ). ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ: subs_key, event_dt, change (Π΅ΡΠ»ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PAYMENT, Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (-1) * CHARGE), balance. ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ Π°Π±ΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΈ ΠΏΠΎ Π΄Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ 4) ΠΠ»Ρ Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ (Π³ΠΎΠ»ΠΎΡ / ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ) ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΠ΅ (ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π΅ ΠΏΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ). ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ: Π°Π±ΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΈΡΠ°Π½ΠΈΠΉ, Β«ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉΒ» ΡΠΈΠΏ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° 5) ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° tree Ρ Π΄Π²ΡΠΌΡ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ: Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Ρ ΡΠ·Π»Ρ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ·Π΅Π». ΠΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ SQL ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΠΊΠ°ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ (inner), ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ (root) ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ·Π΅Π»/Π»ΠΈΡΡ (leaf) 6) *ΠΡΠ²Π΅ΡΡΠΈ Π±ΡΠΊΠ²Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ° (1 ΡΡΠΎΠ»Π±Π΅Ρ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΠΊΠ²Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅). Π‘ΡΡΠ»ΠΊΠ° Π½Π° SQL ΡΠ°ΠΉΠ»: https://drive.google.com/file/d/1ioo4Zc1k0J_DI0QylZ9ba-EwPB2-jXXz/view?usp=drive_link.