ΠΠ°ΠΊΠΎ ΡΠΌΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΊΠΎΡ ΠΎΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Ρ ΠΡΠΎΠΌΠΎΠΏΡΠ»Ρ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΡΠ°ΡΠ°Π½Ρ.
ΠΠ΅ΠΊΠΎ ΡΠ΅ ΠΏΡΠΈΡΠ°Π²ΠΈΠΎ ΠΈ βΠ·Π°ΡΠΏΠ°ΠΎβ Π·Π°ΡΠ²Π΅ΠΊ. ΠΠ΅ΠΊΠΎ ΡΠ΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΠΎ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°ΠΎ ΡΠ΅ ΡΠΎΡ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡΡΠ° ΡΠΎΠΊΠΎΠΌ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ. ΠΠ΅ΠΊΠΎ Π΄ΠΎΠ½ΠΎΡΠΈ Π½ΠΎΠ²Π°Ρ Ρ ΠΊΠ°ΡΡ, Π° Π½Π΅ΠΊΠΎ ΡΠ΅ Π΄ΠΎΡΠ°ΠΎ ΠΏΠΎ Π³ΡΠ°ΡΠΈΡ
ΠΠ° ΠΎΠ²Π°ΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΡΠΊΡΠΏΠΎΠ²ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π½Π°Ρ, Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ½Π°ΡΠ°ΡΠ° ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΈ Π΄ΠΎΠ½ΠΎΡΠ΅ΡΠ΅ ΠΌΠΈΠΊΡΠΎ ΠΎΠ΄Π»ΡΠΊΠ° ΡΠ΅ Π±Π΅ΡΠΌΠΈΡΠ»Π΅Π½ΠΎ. ΠΠ»ΠΈ ΡΠΎΡΠ°Π²Π°ΡΠ΅ ΡΡΠ΅Π½Π΄ΠΎΠ²Π° ΠΈ ΡΠ°Π΄ ΡΠ° Π²Π΅Π»ΠΈΠΊΠΈΠΌ Π³ΡΡΠΏΠ°ΠΌΠ° ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΈ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ. Π¨ΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΠΎ ΠΎΠ½ΠΎ ΡΡΠΎ ΠΌΠΈ ΡΠ°Π΄ΠΈΠΌΠΎ.
Π‘Π°ΠΆΠ΅ΡΠ°ΠΊ
- Π¨ΡΠ° ΡΠ΅ ΠΊΠΎΡ ΠΎΡΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π·Π°ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°?
- ΠΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΠΊΠΎΡ ΠΎΡΡΠ΅ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ΡΠΈΠΌΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Ρ Π‘ΠΠ-Ρ.
- ΠΠ°ΠΊΠΎ ΠΏΡΠ΅Π½Π΅ΡΠΈ ΠΊΠΎΡ
ΠΎΡΡΠ΅ Π½Π°
ΠΡΠ°ΡΠ°Π½Π° .
ΠΠΊΠΎ Π²Π΅Ρ Π·Π½Π°ΡΠ΅ ΡΡΠ° ΡΠ΅ ΠΊΠΎΡ ΠΎΡΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠΎ Π΄Π° ΡΡΠ°Π΄ΠΈΡΠ΅ Ρ Π‘ΠΠ-Ρ, ΠΏΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ ΠΎΠ΄Π΅ΡΠ°ΠΊ.
1. Π¨ΡΠ° ΡΠ΅ ΠΊΠΎΡ ΠΎΡΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π·Π°ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π°?
ΠΠΎΡ ΠΎΡΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ Π³ΡΡΠΏΠ° (ΠΊΠΎΡ ΠΎΡΡΠΈ) ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°. ΠΠ°ΡΡΠ΅ΡΡΠ΅ ΡΠ΅ Π½Π°ΡΠ΅ Π³ΡΡΠΏΠ΅ ΡΠΎΡΠΌΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠ΅ΡΡ Ρ ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΏΠΎΡΠ΅ΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ»ΡΠ³Ρ. ΠΠ΄Π°Π²Π΄Π΅ ΡΠ΅ ΠΈΠ·ΡΠ°ΡΡΠ½Π°Π²Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈ Π²Π΅ΠΊ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°, Π° ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΊΠΎΡΠ΅Π³ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π²ΡΡΠΈΡΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡ Π²Π°ΡΠΈΡΠ΅:
- ΠΊΠ°ΠΊΠΎ ΠΊΠ°Π½Π°Π» Π°ΠΊΠ²ΠΈΠ·ΠΈΡΠΈΡΠ΅ ΡΡΠΈΡΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈ Π²Π΅ΠΊ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°;
- ΠΊΠ°ΠΊΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΡΠ»ΡΠ³Π΅ ΡΡΠΈΡΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈ Π²Π΅ΠΊ;
- ΠΠ°ΠΊΠΎ ΡΠ΅ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΡ ΡΡΠΈΡΠ°Π»ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ½ΠΈ Π²Π΅ΠΊ Ρ ΠΏΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄ΠΈΠ½ΠΎΠΌ.
2. ΠΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΠΊΠΎΡ ΠΎΡΡΠ΅ Ρ Π‘ΠΠ-Ρ?
ΠΠ΅Π»ΠΈΡΠΈΠ½Π° ΡΠ»Π°Π½ΠΊΠ° ΠΈ Π·Π΄ΡΠ°Π² ΡΠ°Π·ΡΠΌ Π½Π°ΠΌ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡ Π΄Π° ΠΎΠ²Π΄Π΅ ΠΈΠ·Π½Π΅ΡΠ΅ΠΌΠΎ Π½Π°ΡΠ΅ ΡΡΠ²Π°ΡΠ½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ β Ρ ΡΠ΅ΡΡΠ½ΠΎΠΌ Π΄Π΅ΠΏΠΎΠ½ΠΈΡΡ, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π³ΠΎΠ΄ΠΈΠ½Ρ ΠΈ ΠΏΠΎ Π΄Π°Π½Π°: 1200 ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΈ 53 ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°. ΠΠ° Π±ΠΈΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ³ΡΠ°ΡΠ΅ ΡΠ° ΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°, ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠ»ΠΈ ΡΠΌΠΎ Π΄ΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΡ ΡΠ° ΠΠΈΠ‘ΠΠ ΠΈ ΠΡΠ°ΡΠ°Π½ΠΎΠΌ Ρ ΠΊΠΎΡΠΎΡ ΡΠ²Π΅ ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈ ΡΠ°ΠΌΠΈ Π΄Π° Π΄ΠΎΠΆΠΈΠ²ΠΈΡΠ΅. ΠΠ΅Π·Π° Π΄ΠΎ ΠΠΈΡΠ₯ΡΠ±-Π° Π½Π° ΠΊΡΠ°ΡΡ ΡΠ»Π°Π½ΠΊΠ°.
Π ΠΎΠ²Π΄Π΅ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ ΡΡΠ²Π°ΡΠ°ΡΠ΅ ΠΊΠΎΡ ΠΎΡΡΠΈ Π½Π° ΠΏΠΎΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ.
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ ΡΡΠ»ΡΠ³Ρ. ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΡΡΡ ΠΈ ΡΡΠΎΡΠ΅ Π½ΠΎΠ²Π°Ρ Π½Π° ΡΡΠ»ΡΠ³Π΅. ΠΡΠ΅ΠΌΠ΅Π½ΠΎΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΎΠ΄ΡΡΡΠ°ΡΡ. ΠΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΡΠ°Π·Π½Π°ΠΌΠΎ ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄ΡΠ³ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΆΠΈΠ²Π΅, Π° ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΡ ΠΎΠΏΠ°Π΄Π° Π½Π°ΠΊΠΎΠ½ 1. ΠΈ 2. ΠΌΠ΅ΡΠ΅ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΡΡΠ»ΡΠ³Π΅.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π½Π° ΠΎΠ²Π° ΠΏΠΈΡΠ°ΡΠ°, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΡ ΠΎΡΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅. ΠΠ΅ΡΠΈΡΠ΅ΠΌΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΏΠΎ ΡΡΠΎΡΠΊΠΎΠ²ΠΈΠΌΠ° ΡΠ²Π°ΠΊΠΎΠ³ ΠΌΠ΅ΡΠ΅ΡΠ°. Π£ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΡΠΊΠΎΠ²Π°, ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ Π½Π°ΡΡΡΠ±ΠΈΠ½Π΅, ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ° Π΄ΡΡΠ³Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Ρ.
ΠΠ΅ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ
ΠΡΠΈΠΌΠ΅ΡΠΈ ΡΡ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ΠΈ Ρ ΠΠΈΠ‘ΠΠ-Ρ, Π°Π»ΠΈ Π·Π° Π΄ΡΡΠ³Π΅ ΠΠΠΠ‘ Π½Π΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΏΠΎΡΡΠΎΡΠ΅ Π·Π½Π°ΡΠ°ΡΠ½Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ΅.
Π’Π°Π±Π΅Π»Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° - ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ:
ΠΠ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ
ΠΠ°ΡΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅
1
2019-01-01
2
2019-02-01
3
2019-02-10
4
2019-03-01
Π’Π°Π±Π΅Π»Π° ΡΡΠΎΡΠΊΠΎΠ²Π° - ΠΎΠ±ΡΠ°ΡΡΠ½:
ΠΠ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ
Π΄Π°ΡΡΠΌ
Π‘ΡΠΌΠ°
1
2019-01-02
11
1
2019-02-22
11
2
2019-02-12
12
3
2019-02-11
13
3
2019-03-11
13
4
2019-03-01
14
4
2019-03-02
14
ΠΠ·Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ²Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ΅ ΠΎΡΠΏΠΈΡΠ΅ ΠΈ Π΄Π°ΡΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅:
SELECT
b.userId,
b.Date,
u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
Π Π΅Π·ΡΠ»ΡΠ°Ρ:
ΠΠ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ
Π΄Π°ΡΡΠΌ
ΠΠ°ΡΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅
1
2019-01-02
2019-01-02
1
2019-02-22
2019-01-02
2
2019-02-12
2019-02-01
3
2019-02-11
2019-02-10
3
2019-03-11
2019-02-10
4
2019-03-01
2019-03-01
4
2019-03-02
2019-03-01
ΠΡΠ°Π΄ΠΈΠΌΠΎ ΠΊΠΎΡ ΠΎΡΡΠ΅ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ΡΠΈΠΌΠ°; Π΄Π° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΡΠ΅ΡΠ²Π°ΡΠ°ΠΌΠΎ ΡΠ²Π΅ Π΄Π°ΡΡΠΌΠ΅ Ρ ΠΌΠ΅ΡΠ΅ΡΠ΅:
DATE_FORMAT(Date, '%Y-%m')
Π‘Π°Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° Π·Π½Π°ΠΌΠΎ ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΌΠ΅ΡΠ΅ΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π±ΠΈΠΎ Π°ΠΊΡΠΈΠ²Π°Π½ - ΠΎΠ²ΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΈΠ·ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° Π·Π°Π΄ΡΠΆΠ΅ΡΠ° ΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅. ΠΠΈΠ‘ΠΠ ΠΈΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡΡ ΠΠΠ ΠΠΠ_ΠΠΠ€Π€() - ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΈΠ·ΠΌΠ΅ΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠ΅ΡΠ°. ΠΠΎΠ΄Π°ΡΡΠ΅ ΠΠΠ ΠΠΠ_ΠΠΠ€Π€() Π·Π°Ρ ΡΠ΅Π²Ρ:
SELECT
b.userId,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
ΠΠ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ
ΠΠΈΠ»Π»ΠΈΠ½Π³ΠΠΎΠ½ΡΡ
ΠΠ°ΡΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ΅
ΠΠΎΠ½ΡΡ
ΡΠΠΈΡΡ
1
2019-01
2019-01
0
1
2019-02
2019-01
1
2
2019-02
2019-02
0
3
2019-02
2019-02
0
3
2019-03
2019-02
1
4
2019-03
2019-03
0
4
2019-03
2019-03
0
ΠΡΠΎΡΠΈΠΌΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΠΌΠ΅ΡΠ΅ΡΡ - Π³ΡΡΠΏΠΈΡΠ΅ΠΌΠΎ Π·Π°ΠΏΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠ° ΠΠΈΠ»Π»ΠΈΠ½Π³ΠΠΎΠ½ΡΡ , Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½ΠΠΎΠ½ΡΡ ΠΈ ΠΠΎΠ½ΡΡ ΡΠΠΈΡΡ:
SELECT
COUNT(DISTINCT(b.userId)) AS UsersCount,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
GROUP BY BillingMonth, RegistrationMonth, MonthsDiff
Π Π΅Π·ΡΠ»ΡΠ°Ρ:
Π£ΡΠ΅ΡΡΠ¦ΠΎΡΠ½Ρ
ΠΠΈΠ»Π»ΠΈΠ½Π³ΠΠΎΠ½ΡΡ
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½ΠΠΎΠ½ΡΡ
ΠΠΎΠ½ΡΡ
ΡΠΠΈΡΡ
1
2019-01
2019-01
0
1
2019-02
2019-01
1
2
2019-02
2019-02
0
1
2019-03
2019-02
1
1
2019-03
2019-03
0
Π£ ΡΠ°Π½ΡΠ°ΡΡ, ΡΠ΅Π±ΡΡΠ°ΡΡ ΠΈ ΠΌΠ°ΡΡΡ ΠΏΠΎΡΠ°Π²ΠΈΠΎ ΡΠ΅ ΠΏΠΎ ΡΠ΅Π΄Π°Π½ Π½ΠΎΠ²ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ - ΠΠΎΠ½ΡΡ ΡΠΠΈΡΡ = 0. ΠΠ΅Π΄Π°Π½ ΡΠ°Π½ΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ΅ Π±ΠΈΠΎ Π°ΠΊΡΠΈΠ²Π°Π½ Ρ ΡΠ΅Π±ΡΡΠ°ΡΡ - Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½ΠΠΎΠ½ΡΡ = 2019-01, ΠΠΈΠ»Π»ΠΈΠ½Π³ΠΠΎΠ½ΡΡ = 2019-02, Π° ΡΠ΅Π΄Π°Π½ ΡΠ΅Π±ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ΅ Π±ΠΈΠΎ Π°ΠΊΡΠΈΠ²Π°Π½ Ρ ΠΌΠ°ΡΡΡ.
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΎΠ±ΡΠ°ΡΡΠΈ ΡΡ Π±ΠΎΡΠ΅ Π²ΠΈΠ΄ΡΠΈΠ²ΠΈ Ρ Π²Π΅Π»ΠΈΠΊΠΎΠΌ ΡΠΊΡΠΏΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
ΠΠ°ΠΊΠΎ ΠΏΡΠ΅Π½Π΅ΡΠΈ ΠΊΠΎΡ ΠΎΡΡΠ΅ Ρ ΠΡΠ°ΡΠ°Π½Ρ
ΠΠ°ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΎΡΠΌΠΈΡΠ°ΠΌΠΎ ΠΊΠΎΡ ΠΎΡΡΠ΅, Π°Π»ΠΈ ΠΊΠ°Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡΠ°, Π²ΠΈΡΠ΅ ΠΈΡ Π½ΠΈΡΠ΅ Π»Π°ΠΊΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ. ΠΠ°ΠΏΠΈΡΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΈΠ·Π²Π΅ΡΡΠΈ Ρ ΠΠΊΡΠ΅Π» ΠΈ ΡΠΎΡΠΌΠΈΡΠ°ΡΠΈ Ρ ΠΏΡΠ΅Π»Π΅ΠΏΠ΅ ΡΠ°Π±Π΅Π»Π΅, Π°Π»ΠΈ ΡΠΎ Π½ΠΈΡΠ΅ Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄!
ΠΠΎΡ
ΠΎΡΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠΊΠ°Π·Π°ΡΠΈ ΠΊΠ°ΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ Ρ
ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, Π΄ΠΎΠ΄Π°ΡΠ΅ΠΌΠΎ ΡΠΎΡ ΡΠ΅Π΄Π°Π½ ΡΠΏΠΈΡ Π·Π° ΠΏΡΠ΅ΡΠ²Π°ΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ³ΠΎΠ΄Π°Π½ Π·Π° ΠΡΠ°ΡΠ°Π½Ρ:
SELECT
DATE_ADD(CONCAT(s.RegistrationMonth, '-01'), INTERVAL s.MonthsDiff MONTH) AS time_sec,
SUM(s.Users) AS value,
s.RegistrationMonth AS metric
FROM (
## ΡΡΠ°ΡΡΠΉ Π·Π°ΠΏΡΠΎΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠ³ΠΎΡΡΡ
SELECT
COUNT(DISTINCT(b.userId)) AS Users,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
WHERE
u.RegistrationDate BETWEEN '2018-01-01' AND CURRENT_DATE
GROUP BY
BillingMonth, RegistrationMonth, MonthsDiff
) AS s
GROUP BY
time_sec, metric
Π ΠΎΡΠΏΡΠ΅ΠΌΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΠΡΠ°ΡΠ°Π½Ρ.
ΠΡΠΈΠΌΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½Π° ΠΈΠ·
ΠΠΎΠ΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠΊΠ°ΠΌΠ°:
ΠΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΡΠ°ΡΠΈ ΡΠ²ΠΎΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ.
ΠΠ‘ Π§Π»Π°Π½ΡΠΈ ΠΎ ΠΊΠΎΡ ΠΎΡΡΠ½ΠΎΡ Π°Π½Π°Π»ΠΈΠ·ΠΈ Ρ Π‘ΠΠ-Ρ:
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ