Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅
CODERIKK

πŸ”Ή Window-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ OVER β€” Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΠΈΠ΅ вычислСния

πŸ”Ή Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ 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 β€” Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΠΈΠ΅ вычислСния

πŸ”Ή Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ 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 - Π‘Π΅Ρ‚ΠΊΠ΅ - Π’Πš

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ вашСй Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π·Π΄Π΅ΡΡŒβ¬‡οΈ