πΉ ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ window-ΡΡΠ½ΠΊΡΠΈΠΈ Π² SQL? πΈ Window-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π΄Π°ΡΡ: Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
ΠΈΠ»ΠΈ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ
ΡΡΡΠΎΠΊ (ΡΠ°Π½Π³, ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ°Ρ ΡΡΠΌΠΌΠ°, Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ) Π±Π΅Π· ΡΠ²ΡΡΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ Π² Π°Π³ΡΠ΅Π³Π°Ρ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΎΡΡΠ°ΡΡΡΡ, ΠΊ Π½Π΅ΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°. πΈ OVER ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Β«ΠΎΠΊΠ½ΠΎΒ» Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ: PARTITION BY Π΄Π΅Π»ΠΈΡ Π½Π°Π±ΠΎΡ Π½Π° Π³ΡΡΠΏΠΏΡ, ORDER BY Π·Π°Π΄Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²Π½ΡΡΡΠΈ Π³ΡΡΠΏΠΏΡ. ΠΠ΅Π· PARTITION ΠΎΠΊΠ½ΠΎ β Π²Π΅ΡΡ Π½Π°Π±ΠΎΡ; Π±Π΅Π· ORDER BY β Π½Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π°. πΈ ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π·ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ user_id ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π·Π°ΠΏΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ROW_NUMBER. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π΄Π΅Π΄ΡΠΏΠ° ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ: SELECT user_id, event_time, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY event_time DESC) AS rn FROM events; rn=1 β ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ WHERE rn=1. π OVER + PARTITION BY + ORDER BY Π΄Π°ΡΡ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ
joins. #CODERIKK #SQL #Middle β‘οΈ ΠΡ Π² Telegram - Π‘Π΅ΡΠΊΠ΅ - ΠΠ ΠΡΠ΄Ρ ΡΠ°Π΄ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π·Π΄Π΅ΡΡβ¬οΈ
πΉ Window-ΡΡΠ½ΠΊΡΠΈΠΈ OVER β ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠΎΠ»ΡΠ·ΡΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
30Β ΠΈΡΠ½Ρ30Β ΠΈΡΠ½
~1 ΠΌΠΈΠ½