{"id":11532,"date":"2026-09-23T03:56:28","date_gmt":"2026-09-23T03:56:28","guid":{"rendered":"https:\/\/otus.ru\/journal\/?p=11532"},"modified":"2026-09-23T03:58:29","modified_gmt":"2026-09-23T03:58:29","slug":"kogortnyj-analiz-ltv-i-rfm-v-sql","status":"publish","type":"post","link":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/","title":{"rendered":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432"},"content":{"rendered":"<p><strong>\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437<\/strong> &#8212; \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u043e\u0440\u0442), \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438: \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. <strong>LTV<\/strong> (lifetime value) &#8212; \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0440\u0436\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442. <strong>RFM<\/strong> &#8212; \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0440\u0435\u0437: \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 (Recency), \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043e\u043a (Frequency) \u0438 \u0441\u0443\u043c\u043c\u0435 (Monetary).<\/p>\n<div class=\"oj-toc\" style=\"background:#f6f6f6;border-radius:8px;padding:14px 20px;margin:20px 0\">\n<p><strong>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/strong><\/p>\n<ol>\n<li><a href=\"#s1\">\u0423\u0447\u0435\u0431\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 orders<\/a><\/li>\n<li><a href=\"#s2\">\u0428\u0430\u0433 1. \u041a\u043e\u0433\u043e\u0440\u0442\u0430 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043c\u0435\u0441\u044f\u0446\u0430\u0445<\/a><\/li>\n<li><a href=\"#s3\">\u0428\u0430\u0433 2. Retention \u043f\u043e \u043a\u043e\u0433\u043e\u0440\u0442\u0430\u043c<\/a><\/li>\n<li><a href=\"#s4\">\u0428\u0430\u0433 3. LTV \u043f\u043e \u043a\u043e\u0433\u043e\u0440\u0442\u0430\u043c<\/a><\/li>\n<li><a href=\"#s5\">\u0428\u0430\u0433 4. RFM-\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a><\/li>\n<li><a href=\"#s6\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0442 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430\u0445<\/a><\/li>\n<li><a href=\"#s7\">\u0412\u044b\u0432\u043e\u0434\u044b<\/a><\/li>\n<li><a href=\"#s8\">\u0413\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \/ \u0441\u0432\u044f\u0437\u044c \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439<\/a><\/li>\n<li><a href=\"#s9\">FAQ<\/a><\/li>\n<\/ol>\n<\/div>\n<p>\u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b &#8212; \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0443\u0447\u0435\u0431\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">orders<\/code> \u0432 PostgreSQL (\u0432\u044b\u0432\u043e\u0434\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u043c \u0432 PostgreSQL 18). \u0417\u0430\u043c\u0435\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u0430\u0442 \u0434\u043b\u044f SQLite, MySQL \u0438 SQL Server &#8212; \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<h2 id=\"s1\">\u0423\u0447\u0435\u0431\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 orders<\/h2>\n<p>\u0428\u0435\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, 11 \u0437\u0430\u043a\u0430\u0437\u043e\u0432; \u0434\u0430\u0442\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 &#8212; 1 \u0430\u043f\u0440\u0435\u043b\u044f 2026.<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">CREATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">TABLE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #E06C75\">order_id<\/span><span style=\"color: #ABB2BF\">   <\/span><span style=\"color: #E5C07B\">INTEGER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">PRIMARY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">KEY<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #E5C07B\">INTEGER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">NOT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">NULL<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E5C07B\">DATE<\/span><span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">NOT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">NULL<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\">     <\/span><span style=\"color: #E5C07B\">NUMERIC<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">10<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">2<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">NOT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">NULL<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">CHECK<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">&gt;<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">0<\/span><span style=\"color: #ABB2BF\">)<\/span>\n<span style=\"color: #ABB2BF\">);<\/span>\n\n<span style=\"color: #C678DD\">INSERT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">INTO<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #E06C75\">order_id<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">VALUES<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-01-10'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">200<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">2<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-02-05'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">150<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-03-20'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">100<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">4<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">2<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-01-15'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">300<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">5<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-01-28'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">120<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">6<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-03-02'<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">80<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">7<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">4<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-02-03'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">500<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">8<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">4<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-02-25'<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">90<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">9<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">4<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-03-15'<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">60<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">10<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">5<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-02-18'<\/span><span style=\"color: #ABB2BF\">,  <\/span><span style=\"color: #D19A66\">40<\/span><span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #ABB2BF\">    (<\/span><span style=\"color: #D19A66\">11<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">6<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #98C379\">'2026-03-05'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">250<\/span><span style=\"color: #ABB2BF\">);<\/span><\/code><\/pre>\n<p><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">CHECK (amount &gt; 0)<\/code> \u043d\u0435 \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u044b; \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0445 \u0432\u044b\u0447\u0438\u0442\u0430\u044e\u0442 \u044f\u0432\u043d\u043e \u0434\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u0430 LTV.<\/p>\n<h2 id=\"s2\">\u0428\u0430\u0433 1. \u041a\u043e\u0433\u043e\u0440\u0442\u0430 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043c\u0435\u0441\u044f\u0446\u0430\u0445<\/h2>\n<p>\u041a\u043e\u0433\u043e\u0440\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 &#8212; \u043c\u0435\u0441\u044f\u0446 \u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430 \u043d\u0443\u0436\u043d\u044b <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">cohort_month<\/code> \u0438 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">month_offset<\/code> &#8212; \u0447\u0438\u0441\u043b\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043e\u0442 \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438. \u041e\u0444\u043e\u0440\u043c\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">CREATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">VIEW<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span>\n<span style=\"color: #C678DD\">WITH<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">first_order<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">MIN<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">first_date<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span>\n<span style=\"color: #ABB2BF\">)<\/span>\n<span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">o<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">o<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">DATE_TRUNC<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #98C379\">'month'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">first_date<\/span><span style=\"color: #ABB2BF\">)::<\/span><span style=\"color: #E5C07B\">date<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       ((<\/span><span style=\"color: #C678DD\">EXTRACT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">YEAR<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">o<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #56B6C2\">-<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">EXTRACT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">YEAR<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">first_date<\/span><span style=\"color: #ABB2BF\">)) <\/span><span style=\"color: #56B6C2\">*<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">12<\/span>\n<span style=\"color: #ABB2BF\">      <\/span><span style=\"color: #56B6C2\">+<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #C678DD\">EXTRACT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">MONTH<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">o<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #56B6C2\">-<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">EXTRACT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">MONTH<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">first_date<\/span><span style=\"color: #ABB2BF\">)))::<\/span><span style=\"color: #E5C07B\">int<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">month_offset<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">o<\/span>\n<span style=\"color: #C678DD\">JOIN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">first_order<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">ON<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">o<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<p>\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u043c \u043c\u0435\u0441\u044f\u0446\u0430\u043c: \u0437\u0430\u043a\u0430\u0437 28 \u044f\u043d\u0432\u0430\u0440\u044f \u0438 \u0437\u0430\u043a\u0430\u0437 2 \u043c\u0430\u0440\u0442\u0430 \u0434\u0430\u044e\u0442 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">month_offset = 2<\/code>, \u0445\u043e\u0442\u044f \u043f\u0440\u043e\u0448\u043b\u043e 33 \u0434\u043d\u044f. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">AGE<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435: \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0430\u0442\u044b \u043f\u043e\u043b\u0435 \u0437\u0430 \u043f\u043e\u043b\u0435\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u00ab\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439\u00bb \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0438\u0437 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438 \u0434\u043d\u0435\u0439:<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">AGE<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E5C07B\">DATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #98C379\">'2026-03-02'<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E5C07B\">DATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #98C379\">'2026-01-28'<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">age_interval<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> age_interval\n--------------\n 1 mon 5 days\n<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c 1 \u043c\u0435\u0441\u044f\u0446, \u0430 \u043d\u0435 2. \u0414\u043d\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u00ab\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435\u00bb: \u043f\u0440\u0438 \u0437\u0430\u0435\u043c\u0435 \u043c\u0435\u0441\u044f\u0446\u0430 PostgreSQL \u0431\u0435\u0440\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u043c\u0435\u0441\u044f\u0446\u0430 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0439 \u0434\u0430\u0442\u044b (\u044f\u043d\u0432\u0430\u0440\u044c, 31 \u0434\u0435\u043d\u044c), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 5 \u0434\u043d\u0435\u0439, \u0445\u043e\u0442\u044f \u043e\u0442 28 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u0434\u043e 2 \u043c\u0430\u0440\u0442\u0430 \u0432\u0441\u0435\u0433\u043e 2 \u0434\u043d\u044f. \u0414\u043b\u044f \u043a\u043e\u0433\u043e\u0440\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430, \u0438\u043d\u0430\u0447\u0435 \u043c\u0430\u0440\u0442\u043e\u0432\u0441\u043a\u0438\u0435 \u0437\u0430\u043a\u0430\u0437\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u044f\u043d\u0432\u0430\u0440\u044f \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b.<\/p>\n<h2 id=\"s3\">\u0428\u0430\u0433 2. Retention \u043f\u043e \u043a\u043e\u0433\u043e\u0440\u0442\u0430\u043c<\/h2>\n<p><strong>Retention \u043c\u0435\u0441\u044f\u0446\u0430 N<\/strong> \u0437\u0434\u0435\u0441\u044c &#8212; \u0434\u043e\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0433\u043e\u0440\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0443 \u043f\u043e\u043a\u0443\u043f\u043a\u0443 \u0432 \u043c\u0435\u0441\u044f\u0446\u0435 N \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. \u042d\u0442\u043e \u043d\u0435 \u00ab\u0434\u043e\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0434\u043e \u043c\u0435\u0441\u044f\u0446\u0430 N\u00bb: \u043a\u043b\u0438\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u0435\u0441\u044f\u0446 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f.<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">WITH<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_size<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">DISTINCT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">users<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">WHERE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">0<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #ABB2BF\">)<\/span>\n<span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">DISTINCT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">active_users<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">ROUND<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">100<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #D19A66\">0<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">*<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">DISTINCT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #56B6C2\">\/<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">users<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">retention_pct<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span>\n<span style=\"color: #C678DD\">JOIN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_size<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">ON<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">users<\/span>\n<span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">a<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> cohort_month | month_offset | active_users | retention_pct\n--------------+--------------+--------------+---------------\n 2026-01-01   |            0 |            3 |         100.0\n 2026-01-01   |            1 |            1 |          33.3\n 2026-01-01   |            2 |            2 |          66.7\n 2026-02-01   |            0 |            2 |         100.0\n 2026-02-01   |            1 |            1 |          50.0\n 2026-03-01   |            0 |            1 |         100.0\n<\/code><\/pre>\n<p>\u0423 \u044f\u043d\u0432\u0430\u0440\u0441\u043a\u043e\u0439 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u043c\u0435\u0441\u044f\u0446 2 \u0432\u044b\u0448\u0435 \u043c\u0435\u0441\u044f\u0446\u0430 1: \u043a\u043b\u0438\u0435\u043d\u0442 3 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0444\u0435\u0432\u0440\u0430\u043b\u044c \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432 \u043c\u0430\u0440\u0442\u0435. \u0423 \u043c\u0430\u0440\u0442\u043e\u0432\u0441\u043a\u043e\u0439 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0435\u0446 0: \u043f\u0443\u0441\u0442\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0437\u0434\u0435\u0441\u044c &#8212; \u00ab\u043c\u0435\u0441\u044f\u0446 \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b\u00bb, \u0430 \u043d\u0435 \u00ab0% \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f\u00bb.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430: \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0447\u0435\u0440\u0435\u0437 COUNT(*)<\/h3>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0437\u0430\u043a\u0430\u0437\u043e\u0432, \u0430 \u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432:<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #56B6C2\">*<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_size<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span>\n<span style=\"color: #C678DD\">WHERE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">0<\/span>\n<span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> cohort_month | cohort_size\n--------------+-------------\n 2026-01-01   |           3\n 2026-02-01   |           3\n 2026-03-01   |           1\n<\/code><\/pre>\n<p>\u0412 \u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u0439 \u043a\u043e\u0433\u043e\u0440\u0442\u0435 \u0434\u0432\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442 4 \u043a\u0443\u043f\u0438\u043b \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 \u0434\u0432\u0430\u0436\u0434\u044b &#8212; \u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0430\u043b 3, retention \u043c\u0435\u0441\u044f\u0446\u0430 1 \u0437\u0430\u043d\u0438\u0437\u0438\u0442\u0441\u044f \u0441 50% \u0434\u043e 33,3%. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#8212; <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">COUNT(DISTINCT user_id)<\/code>, \u043a\u0430\u043a \u0432\u044b\u0448\u0435: \u0444\u0435\u0432\u0440\u0430\u043b\u044c \u0434\u0430\u0435\u0442 2.<\/p>\n<h2 id=\"s4\">\u0428\u0430\u0433 3. LTV \u043f\u043e \u043a\u043e\u0433\u043e\u0440\u0442\u0430\u043c<\/h2>\n<p>\u0417\u0434\u0435\u0441\u044c <strong>LTV<\/strong> &#8212; \u043a\u0443\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u043a \u043c\u0435\u0441\u044f\u0446\u0443 N, \u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u0447\u0438\u0441\u043b\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0433\u043e\u0440\u0442\u044b. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430, \u0430 \u043d\u0435 \u043c\u0430\u0440\u0436\u0430; \u0434\u043b\u044f \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u043d\u0430 \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u0430 \u043c\u0430\u0440\u0436\u0430 (\u043c\u0438\u043d\u0443\u0441 \u0441\u0435\u0431\u0435\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u0441\u043a\u0438\u0434\u043a\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u044b);<\/li>\n<li>\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442 \u0440\u0430\u0432\u0435\u043d \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0443: \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 LTV \u0437\u0430 N \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u00ab\u0437\u0430 \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c\u00bb, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0442\u043e\u043a\u0430.<\/li>\n<\/ul>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">WITH<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_size<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">DISTINCT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">users<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">WHERE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">0<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #ABB2BF\">),<\/span>\n<span style=\"color: #E06C75\">revenue<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #C678DD\">SUM<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">revenue<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders_with_cohort<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">month_offset<\/span>\n<span style=\"color: #ABB2BF\">)<\/span>\n<span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">revenue<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">ROUND<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #C678DD\">SUM<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">revenue<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">OVER<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #E06C75\">PARTITION<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #ABB2BF\">                                  <\/span><span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #56B6C2\">\/<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">users<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #D19A66\">2<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cum_ltv<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">revenue<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span>\n<span style=\"color: #C678DD\">JOIN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">cohort_size<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">ON<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">c<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span>\n<span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">cohort_month<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">.<\/span><span style=\"color: #E06C75\">month_offset<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> cohort_month | month_offset | revenue | cum_ltv\n--------------+--------------+---------+---------\n 2026-01-01   |            0 |  620.00 |  206.67\n 2026-01-01   |            1 |  150.00 |  256.67\n 2026-01-01   |            2 |  180.00 |  316.67\n 2026-02-01   |            0 |  630.00 |  315.00\n 2026-02-01   |            1 |   60.00 |  345.00\n 2026-03-01   |            0 |  250.00 |  250.00\n<\/code><\/pre>\n<p>\u041e\u043a\u043e\u043d\u043d\u044b\u0439 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">SUM<\/code> \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0440\u0443\u0447\u043a\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0433\u043e\u0440\u0442\u044b. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0435: \u043a \u043c\u0435\u0441\u044f\u0446\u0443 1 \u044f\u043d\u0432\u0430\u0440\u0441\u043a\u0430\u044f \u0434\u0430\u0435\u0442 256.67, \u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u0430\u044f &#8212; 345.00; \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0435 316.67 \u0438 345.00 \u043d\u0435\u0441\u0440\u0430\u0432\u043d\u0438\u043c\u044b. \u041c\u0435\u0441\u044f\u0446 \u0431\u0435\u0437 \u043f\u043e\u043a\u0443\u043f\u043e\u043a \u043d\u0435 \u0434\u0430\u0441\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 &#8212; \u0434\u043b\u044f \u043e\u0442\u0447\u0435\u0442\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">generate_series<\/code>.<\/p>\n<h2 id=\"s5\">\u0428\u0430\u0433 4. RFM-\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0422\u0440\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430 \u0434\u0430\u0442\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430: \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0432 \u0434\u043d\u044f\u0445, \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043a\u0430\u0437\u043e\u0432, \u0441\u0443\u043c\u043c\u0430. \u0412\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u0434\u0430\u0442 \u0432 PostgreSQL \u0434\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439.<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">CREATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">VIEW<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">rfm<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">AS<\/span>\n<span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E5C07B\">DATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #98C379\">'2026-04-01'<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">-<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">MAX<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">recency_days<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #C678DD\">COUNT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #56B6C2\">*<\/span><span style=\"color: #ABB2BF\">)                            <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">frequency<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #C678DD\">SUM<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">amount<\/span><span style=\"color: #ABB2BF\">)                         <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">monetary<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">orders<\/span>\n<span style=\"color: #C678DD\">WHERE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">order_date<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">&lt;<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E5C07B\">DATE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #98C379\">'2026-04-01'<\/span>\n<span style=\"color: #C678DD\">GROUP<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<p>\u0411\u0430\u043b\u043b\u044b &#8212; \u043e\u0442 1 \u0434\u043e 3 (\u0432 \u0431\u0438\u0437\u043d\u0435\u0441\u0435 \u0447\u0430\u0449\u0435 1-5, \u043d\u0430 \u0448\u0435\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445 \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u0435\u0435). \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 &#8212; \u043a\u0432\u0430\u043d\u0442\u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NTILE(3)<\/code>:<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">recency_days<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">frequency<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">monetary<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">NTILE<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">OVER<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">recency_days<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">DESC<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">NTILE<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">OVER<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">frequency<\/span><span style=\"color: #ABB2BF\">)         <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">       <\/span><span style=\"color: #E06C75\">NTILE<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">OVER<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">monetary<\/span><span style=\"color: #ABB2BF\">)          <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">m<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">rfm<\/span>\n<span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> user_id | recency_days | frequency | monetary | r | f | m\n---------+--------------+-----------+----------+---+---+---\n       1 |           12 |         3 |   450.00 | 3 | 3 | 3\n       2 |           76 |         1 |   300.00 | 1 | 2 | 2\n       3 |           30 |         2 |   200.00 | 2 | 2 | 1\n       4 |           17 |         3 |   650.00 | 3 | 3 | 3\n       5 |           42 |         1 |    40.00 | 1 | 1 | 1\n       6 |           27 |         1 |   250.00 | 2 | 1 | 2\n<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">f<\/code>: \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 2, 5 \u0438 6 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u0430\u043a\u0430\u0437\u0443, \u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442 2 \u043f\u043e\u043b\u0443\u0447\u0438\u043b 2, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 &#8212; 1. <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NTILE<\/code> \u0434\u0435\u043b\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0430\u0432\u043d\u044b\u0435 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0432\u043d\u044b\u0445 \u0421\u0423\u0411\u0414 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u044b &#8212; \u043f\u043e\u0440\u043e\u0433\u0438, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u043e\u043c:<\/p>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">m<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">CONCAT<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">m<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">rfm_segment<\/span>\n<span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> (<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">SELECT<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">           <\/span><span style=\"color: #C678DD\">CASE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">WHEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">recency_days<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">&lt;=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">30<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">THEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">3<\/span>\n<span style=\"color: #ABB2BF\">                <\/span><span style=\"color: #C678DD\">WHEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">recency_days<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">&lt;=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">60<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">THEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">2<\/span>\n<span style=\"color: #ABB2BF\">                <\/span><span style=\"color: #C678DD\">ELSE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">END<\/span><span style=\"color: #ABB2BF\">                   <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">r<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">           <\/span><span style=\"color: #C678DD\">CASE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">WHEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">frequency<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">&gt;=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">THEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">3<\/span>\n<span style=\"color: #ABB2BF\">                <\/span><span style=\"color: #C678DD\">WHEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">frequency<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #56B6C2\">=<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">2<\/span><span style=\"color: #ABB2BF\">  <\/span><span style=\"color: #C678DD\">THEN<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">2<\/span>\n<span style=\"color: #ABB2BF\">                <\/span><span style=\"color: #C678DD\">ELSE<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #D19A66\">1<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">END<\/span><span style=\"color: #ABB2BF\">                   <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">f<\/span><span style=\"color: #ABB2BF\">,<\/span>\n<span style=\"color: #ABB2BF\">           <\/span><span style=\"color: #E06C75\">NTILE<\/span><span style=\"color: #ABB2BF\">(<\/span><span style=\"color: #D19A66\">3<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">OVER<\/span><span style=\"color: #ABB2BF\"> (<\/span><span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">monetary<\/span><span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #C678DD\">AS<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">m<\/span>\n<span style=\"color: #ABB2BF\">    <\/span><span style=\"color: #C678DD\">FROM<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">rfm<\/span>\n<span style=\"color: #ABB2BF\">) <\/span><span style=\"color: #E06C75\">scored<\/span>\n<span style=\"color: #C678DD\">ORDER<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">BY<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #E06C75\">rfm_segment<\/span><span style=\"color: #ABB2BF\"> <\/span><span style=\"color: #C678DD\">DESC<\/span><span style=\"color: #ABB2BF\">, <\/span><span style=\"color: #E06C75\">user_id<\/span><span style=\"color: #ABB2BF\">;<\/span><\/code><\/pre>\n<pre style=\"background:#282c34;color:#abb2bf;border-radius:8px;padding:16px 20px;margin:20px 0;overflow-x:auto;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\"><code style=\"background:none\"> user_id | r | f | m | rfm_segment\n---------+---+---+---+-------------\n       1 | 3 | 3 | 3 | 333\n       4 | 3 | 3 | 3 | 333\n       3 | 3 | 2 | 1 | 321\n       6 | 3 | 1 | 2 | 312\n       5 | 2 | 1 | 1 | 211\n       2 | 1 | 1 | 2 | 112\n<\/code><\/pre>\n<p>\u0421\u0435\u0433\u043c\u0435\u043d\u0442 333 &#8212; \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0435, \u0447\u0430\u0441\u0442\u044b\u0435 \u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b; \u043a\u043b\u0438\u0435\u043d\u0442 2 (112) \u043a\u0443\u043f\u0438\u043b \u0434\u0430\u0432\u043d\u043e, \u043d\u043e \u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 &#8212; \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0443\u044e \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0443. \u041f\u043e\u0440\u043e\u0433\u0438 30\/60 \u0434\u043d\u0435\u0439 \u0438 2\/3 \u0437\u0430\u043a\u0430\u0437\u0430 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u043f\u043e\u0434 \u0443\u0447\u0435\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432 \u0431\u0438\u0437\u043d\u0435\u0441\u0435 \u0438\u0445 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u043e \u0446\u0438\u043a\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043a\u0438. \u0414\u043b\u044f \u0441\u0443\u043c\u043c\u044b <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NTILE<\/code> \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c: \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0441\u0443\u043c\u043c \u043d\u0435\u0442.<\/p>\n<h2 id=\"s6\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0442 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430\u0445<\/h2>\n<table>\n<thead>\n<tr>\n<th>\u0417\u0430\u0434\u0430\u0447\u0430<\/th>\n<th>PostgreSQL<\/th>\n<th>SQLite<\/th>\n<th>MySQL 8<\/th>\n<th>SQL Server<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u041d\u0430\u0447\u0430\u043b\u043e \u043c\u0435\u0441\u044f\u0446\u0430<\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATE_TRUNC('month', d)<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">strftime('%Y-%m-01', d)<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATE_FORMAT(d, '%Y-%m-01')<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATETRUNC(month, d)<\/code> (2022+)<\/td>\n<\/tr>\n<tr>\n<td>\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043c\u0435\u0441\u044f\u0446\u0430\u0445<\/td>\n<td>\u0447\u0435\u0440\u0435\u0437 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">EXTRACT<\/code> (\u043a\u0430\u043a \u0432\u044b\u0448\u0435)<\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">strftime('%Y')*12 + strftime('%m')<\/code>, \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>\u0447\u0435\u0440\u0435\u0437 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">YEAR<\/code>\/<code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">MONTH<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATEDIFF(month, a, b)<\/code> &#8212; \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0435\u0441\u044f\u0446\u0435\u0432<\/td>\n<\/tr>\n<tr>\n<td>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0434\u043d\u044f\u0445<\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">b - a<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">julianday(b) - julianday(a)<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATEDIFF(b, a)<\/code><\/td>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATEDIFF(day, a, b)<\/code><\/td>\n<\/tr>\n<tr>\n<td><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NTILE<\/code>, \u043e\u043a\u043e\u043d\u043d\u044b\u0439 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">SUM<\/code><\/td>\n<td>\u0435\u0441\u0442\u044c<\/td>\n<td>\u0441 3.25<\/td>\n<td>\u0441 8.0<\/td>\n<td>\u0435\u0441\u0442\u044c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0412 SQLite <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">strftime<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442: \u0432 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0435 \u043e\u043d \u0441\u0430\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0447\u0438\u0441\u043b\u0443, \u043d\u043e \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0438\u0441\u043b\u0430 (<code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">strftime('%m', d) &gt; 9<\/code> \u0438\u0441\u0442\u0438\u043d\u043d\u043e \u0438 \u0434\u043b\u044f \u043c\u0430\u0440\u0442\u0430), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">CAST(... AS INTEGER)<\/code>; <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">julianday<\/code> \u0434\u0430\u0435\u0442 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (33.0). \u0410 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NUMERIC(10, 2)<\/code> \u043d\u0435 \u0434\u0430\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 &#8212; \u0434\u0435\u043d\u044c\u0433\u0438 \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0446\u0435\u043b\u044b\u043c\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0430\u043c\u0438. \u0412 MySQL <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">TIMESTAMPDIFF(MONTH, a, b)<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0435 \u043c\u0435\u0441\u044f\u0446\u044b, \u043a\u0430\u043a <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">AGE<\/code>.<\/p>\n<h2 id=\"s7\">\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<ul>\n<li>\u041a\u043e\u0433\u043e\u0440\u0442\u0430 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438, \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043e\u0433\u043e\u0440\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b &#8212; \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u043c\u0438 \u043c\u0435\u0441\u044f\u0446\u0430\u043c\u0438, \u0430 \u043d\u0435 <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">AGE<\/code>.<\/li>\n<li>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">COUNT(DISTINCT user_id)<\/code>: <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">COUNT(*)<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0437\u0430\u043a\u0430\u0437\u044b \u0438 \u0437\u0430\u043d\u0438\u0436\u0430\u0435\u0442 retention.<\/li>\n<li>LTV \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 &#8212; \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0443\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0437\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0438.<\/li>\n<li><code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">NTILE<\/code> \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0431\u0430\u043b\u043b\u0430\u043c; \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0438 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435 \u043f\u043e\u0440\u043e\u0433\u0438 \u043f\u043e \u0446\u0438\u043a\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043a\u0438.<\/li>\n<li>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0421\u0423\u0411\u0414, \u043b\u043e\u0433\u0438\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f.<\/li>\n<\/ul>\n<h2 id=\"s8\">\u0413\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \/ \u0441\u0432\u044f\u0437\u044c \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439<\/h2>\n<div class=\"oj-cta\" style=\"background:#fbf4e4;border-left:4px solid #c9962b;border-radius:8px;padding:16px 20px;margin:24px 0\">\n<p style=\"margin:0 0 8px\"><strong>\u041e\u0441\u0432\u043e\u0439\u0442\u0435 \u0442\u0435\u043c\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/strong><\/p>\n<p>\u041a\u043e\u0433\u043e\u0440\u0442\u044b, retention, LTV \u0438 RFM &#8212; \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430: \u043f\u043e \u043d\u0438\u043c \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433, \u043e\u043a\u0443\u043f\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u043e \u044d\u0442\u0438 \u0442\u0435\u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u0443\u0440\u0441\u0435 <a href=\"https:\/\/otus.ru\/lessons\/product-analytics\/?utm_source=oj&amp;utm_medium=article&amp;utm_campaign=kogortnyj-analiz-ltv-i-rfm-v-sql&amp;utm_content=course\">\u00ab\u041f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430\u00bb<\/a>, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0431\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 <a href=\"https:\/\/otus.ru\/events\/?utm_source=oj&amp;utm_medium=article&amp;utm_campaign=kogortnyj-analiz-ltv-i-rfm-v-sql&amp;utm_content=events\">\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0443\u0440\u043e\u043a\u0430\u0445 Otus<\/a>.<\/p>\n<\/div>\n<h2 id=\"s9\">FAQ<\/h2>\n<p><strong>\u041a\u043e\u0433\u043e\u0440\u0442\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438?<\/strong><br \/>\n\u041f\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 &#8212; \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043f\u043e\u043a\u0443\u043f\u043a\u0443, \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0435 &#8212; \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u043e\u043a\u0443\u043f\u043a\u0438. \u0412 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u0445 \u043d\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u044e\u0442.<\/p>\n<p><strong>\u041a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 \u0447\u0430\u0441\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u044f\u0441\u0430\u043c\u0438?<\/strong><br \/>\n\u0415\u0441\u043b\u0438 \u0434\u0430\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">timestamptz<\/code>, \u043c\u0435\u0441\u044f\u0446 \u0437\u0430\u043a\u0430\u0437\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u044f\u0441\u0430 \u0441\u0435\u0441\u0441\u0438\u0438. \u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043a \u043f\u043e\u044f\u0441\u0443 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 (<code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">AT TIME ZONE<\/code>) \u0434\u043e <code style=\"background:#eef0f3;color:#24292f;border-radius:4px;padding:1px 5px;font-size:0.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace\">DATE_TRUNC<\/code>.<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0437\u0430\u0432\u0435\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442?<\/strong><br \/>\n\u0414\u043b\u044f SQL \u044d\u0442\u043e \u0434\u0432\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0421\u043a\u043b\u0435\u0438\u0432\u0430\u0439\u0442\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u044b \u0434\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u043e \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u043c\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443, \u0438\u043d\u0430\u0447\u0435 retention \u0437\u0430\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 &#8212; \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u043e\u0440\u0442), \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438: \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. LTV (lifetime value) &#8212; \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0440\u0436\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442. RFM &#8212; \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0440\u0435\u0437: \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 (Recency), \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043e\u043a (Frequency) \u0438 \u0441\u0443\u043c\u043c\u0435 (Monetary). [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11532","post","type-post","status-publish","format-standard","","category-pro-it"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 - \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u043e\u0440\u0442), \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438: \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. LTV (lifetime value) - \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0440\u0436\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442. RFM - \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0440\u0435\u0437: \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 (Recency), \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043e\u043a (Frequency) \u0438 \u0441\u0443\u043c\u043c\u0435 (Monetary).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Nicolay Alexandrov\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#article\",\"name\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437, LTV \\u0438 RFM \\u0432 SQL: \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u044b \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0439 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0435 \\u0437\\u0430\\u043a\\u0430\\u0437\\u043e\\u0432 OTUS\",\"headline\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437, LTV \\u0438 RFM \\u0432 SQL: \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u044b \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0439 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0435 \\u0437\\u0430\\u043a\\u0430\\u0437\\u043e\\u0432\",\"author\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/author\\\/nick-alex\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/OTUS-journal-logo-180x180-1.png\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#articleImage\",\"width\":180,\"height\":180},\"datePublished\":\"2026-09-23T03:56:28+00:00\",\"dateModified\":\"2026-09-23T03:58:29+00:00\",\"inLanguage\":\"ru-RU\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#webpage\"},\"articleSection\":\"\\u041f\\u0440\\u043e IT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/otus.ru\\\/journal\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/category\\\/pro-it\\\/#listItem\",\"name\":\"\\u041f\\u0440\\u043e IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/category\\\/pro-it\\\/#listItem\",\"position\":2,\"name\":\"\\u041f\\u0440\\u043e IT\",\"item\":\"https:\\\/\\\/otus.ru\\\/journal\\\/category\\\/pro-it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#listItem\",\"name\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437, LTV \\u0438 RFM \\u0432 SQL: \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u044b \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0439 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0435 \\u0437\\u0430\\u043a\\u0430\\u0437\\u043e\\u0432\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#listItem\",\"position\":3,\"name\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437, LTV \\u0438 RFM \\u0432 SQL: \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u044b \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0439 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0435 \\u0437\\u0430\\u043a\\u0430\\u0437\\u043e\\u0432\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/category\\\/pro-it\\\/#listItem\",\"name\":\"\\u041f\\u0440\\u043e IT\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#organization\",\"name\":\"\\u041e\\u0442\\u0443\\u0441 \\u043e\\u043d\\u043b\\u0430\\u0439\\u043d-\\u043e\\u0431\\u0440\\u0430\\u0437\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\",\"description\":\"\\u0411\\u043b\\u043e\\u0433 \\u043f\\u0440\\u043e IT\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/\",\"telephone\":\"+74999389202\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/OTUS-journal-logo-180x180-1.png\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#organizationLogo\",\"width\":180,\"height\":180},\"image\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCetgtvy93o3i3CvyGXKFU3g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/author\\\/nick-alex\\\/#author\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/author\\\/nick-alex\\\/\",\"name\":\"Nicolay Alexandrov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6995f71ff1d23ddbc1c20fa25d779855e75a2fe5da02a98cb12d974d1f1b5057?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Nicolay Alexandrov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#webpage\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/\",\"name\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437, LTV \\u0438 RFM \\u0432 SQL: \\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u044b \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0439 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0435 \\u0437\\u0430\\u043a\\u0430\\u0437\\u043e\\u0432 OTUS\",\"description\":\"\\u041a\\u043e\\u0433\\u043e\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0430\\u043d\\u0430\\u043b\\u0438\\u0437 - \\u044d\\u0442\\u043e \\u0441\\u0440\\u0430\\u0432\\u043d\\u0435\\u043d\\u0438\\u0435 \\u0433\\u0440\\u0443\\u043f\\u043f \\u043a\\u043b\\u0438\\u0435\\u043d\\u0442\\u043e\\u0432 (\\u043a\\u043e\\u0433\\u043e\\u0440\\u0442), \\u043e\\u0431\\u044a\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043d\\u044b\\u0445 \\u043c\\u0435\\u0441\\u044f\\u0446\\u0435\\u043c \\u043f\\u0435\\u0440\\u0432\\u043e\\u0439 \\u043f\\u043e\\u043a\\u0443\\u043f\\u043a\\u0438: \\u043a\\u0430\\u043a \\u0447\\u0430\\u0441\\u0442\\u043e \\u043e\\u043d\\u0438 \\u0432\\u043e\\u0437\\u0432\\u0440\\u0430\\u0449\\u0430\\u044e\\u0442\\u0441\\u044f \\u0438 \\u0441\\u043a\\u043e\\u043b\\u044c\\u043a\\u043e \\u043f\\u0440\\u0438\\u043d\\u043e\\u0441\\u044f\\u0442 \\u0432 \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0438\\u0435 \\u043f\\u0435\\u0440\\u0438\\u043e\\u0434\\u044b. LTV (lifetime value) - \\u043d\\u0430\\u043a\\u043e\\u043f\\u043b\\u0435\\u043d\\u043d\\u0430\\u044f \\u0432\\u044b\\u0440\\u0443\\u0447\\u043a\\u0430 \\u0438\\u043b\\u0438 \\u043c\\u0430\\u0440\\u0436\\u0430 \\u043d\\u0430 \\u043e\\u0434\\u043d\\u043e\\u0433\\u043e \\u043a\\u043b\\u0438\\u0435\\u043d\\u0442\\u0430 \\u043a\\u043e\\u0433\\u043e\\u0440\\u0442\\u044b \\u0437\\u0430 \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0433\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442. RFM - \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0441\\u0440\\u0435\\u0437: \\u0441\\u0435\\u0433\\u043c\\u0435\\u043d\\u0442\\u0430\\u0446\\u0438\\u044f \\u043e\\u0442\\u0434\\u0435\\u043b\\u044c\\u043d\\u044b\\u0445 \\u043a\\u043b\\u0438\\u0435\\u043d\\u0442\\u043e\\u0432 \\u043f\\u043e \\u0434\\u0430\\u0432\\u043d\\u043e\\u0441\\u0442\\u0438 \\u043f\\u043e\\u0441\\u043b\\u0435\\u0434\\u043d\\u0435\\u0439 \\u043f\\u043e\\u043a\\u0443\\u043f\\u043a\\u0438 (Recency), \\u0447\\u0438\\u0441\\u043b\\u0443 \\u043f\\u043e\\u043a\\u0443\\u043f\\u043e\\u043a (Frequency) \\u0438 \\u0441\\u0443\\u043c\\u043c\\u0435 (Monetary).\",\"inLanguage\":\"ru-RU\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/kogortnyj-analiz-ltv-i-rfm-v-sql\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/author\\\/nick-alex\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/author\\\/nick-alex\\\/#author\"},\"datePublished\":\"2026-09-23T03:56:28+00:00\",\"dateModified\":\"2026-09-23T03:58:29+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#website\",\"url\":\"https:\\\/\\\/otus.ru\\\/journal\\\/\",\"name\":\"OTUS \\u0416\\u0443\\u0440\\u043d\\u0430\\u043b - \\u0411\\u043b\\u043e\\u0433 \\u043f\\u0440\\u043e IT\",\"alternateName\":\"OTUS \\u0416\\u0443\\u0440\\u043d\\u0430\\u043b\",\"description\":\"\\u0411\\u043b\\u043e\\u0433 \\u043f\\u0440\\u043e IT\",\"inLanguage\":\"ru-RU\",\"publisher\":{\"@id\":\"https:\\\/\\\/otus.ru\\\/journal\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 OTUS","description":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 - \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u043e\u0440\u0442), \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438: \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. LTV (lifetime value) - \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0440\u0436\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442. RFM - \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0440\u0435\u0437: \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 (Recency), \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043e\u043a (Frequency) \u0438 \u0441\u0443\u043c\u043c\u0435 (Monetary).","canonical_url":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#article","name":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 OTUS","headline":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432","author":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2026\/04\/OTUS-journal-logo-180x180-1.png","@id":"https:\/\/otus.ru\/journal\/#articleImage","width":180,"height":180},"datePublished":"2026-09-23T03:56:28+00:00","dateModified":"2026-09-23T03:58:29+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#webpage"},"articleSection":"\u041f\u0440\u043e IT"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal#listItem","position":1,"name":"Home","item":"https:\/\/otus.ru\/journal","nextItem":{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/category\/pro-it\/#listItem","name":"\u041f\u0440\u043e IT"}},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/category\/pro-it\/#listItem","position":2,"name":"\u041f\u0440\u043e IT","item":"https:\/\/otus.ru\/journal\/category\/pro-it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#listItem","name":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432"},"previousItem":{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#listItem","position":3,"name":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432","previousItem":{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/category\/pro-it\/#listItem","name":"\u041f\u0440\u043e IT"}}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","description":"\u0411\u043b\u043e\u0433 \u043f\u0440\u043e IT","url":"https:\/\/otus.ru\/journal\/","telephone":"+74999389202","logo":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2026\/04\/OTUS-journal-logo-180x180-1.png","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#organizationLogo","width":180,"height":180},"image":{"@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#organizationLogo"},"sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"]},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author","url":"https:\/\/otus.ru\/journal\/author\/nick-alex\/","name":"Nicolay Alexandrov","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/6995f71ff1d23ddbc1c20fa25d779855e75a2fe5da02a98cb12d974d1f1b5057?s=96&d=mm&r=g","width":96,"height":96,"caption":"Nicolay Alexandrov"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#webpage","url":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/","name":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 OTUS","description":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 - \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043a\u043e\u0433\u043e\u0440\u0442), \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438: \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u044b. LTV (lifetime value) - \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0438\u043b\u0438 \u043c\u0430\u0440\u0436\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u0433\u043e\u0440\u0442\u044b \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442. RFM - \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0440\u0435\u0437: \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 (Recency), \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043a\u0443\u043f\u043e\u043a (Frequency) \u0438 \u0441\u0443\u043c\u043c\u0435 (Monetary).","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"datePublished":"2026-09-23T03:56:28+00:00","dateModified":"2026-09-23T03:58:29+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS \u0416\u0443\u0440\u043d\u0430\u043b - \u0411\u043b\u043e\u0433 \u043f\u0440\u043e IT","alternateName":"OTUS \u0416\u0443\u0440\u043d\u0430\u043b","description":"\u0411\u043b\u043e\u0433 \u043f\u0440\u043e IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}},"aioseo_meta_data":{"post_id":"11532","title":null,"description":null,"keywords":[],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2025-04-23 09:08:37","updated":"2026-09-23 04:15:02","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/otus.ru\/journal\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/otus.ru\/journal\/category\/pro-it\/\" title=\"\u041f\u0440\u043e IT\">\u041f\u0440\u043e IT<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/otus.ru\/journal"},{"label":"\u041f\u0440\u043e IT","link":"https:\/\/otus.ru\/journal\/category\/pro-it\/"},{"label":"\u041a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, LTV \u0438 RFM \u0432 SQL: \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0437\u0430\u043a\u0430\u0437\u043e\u0432","link":"https:\/\/otus.ru\/journal\/kogortnyj-analiz-ltv-i-rfm-v-sql\/"}],"_links":{"self":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/11532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/comments?post=11532"}],"version-history":[{"count":2,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/11532\/revisions"}],"predecessor-version":[{"id":12504,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/posts\/11532\/revisions\/12504"}],"wp:attachment":[{"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/media?parent=11532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/categories?post=11532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/otus.ru\/journal\/wp-json\/wp\/v2\/tags?post=11532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}