{"id":349219,"date":"2023-06-22T15:03:18","date_gmt":"2023-06-22T15:03:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=349219"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=349219","title":{"rendered":"<span>\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b \u00abIT-\u041f\u043b\u0430\u043d\u0435\u0442\u044b\u00bb \u043f\u043e PostgreSQL<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u043b\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0441 \u043f\u043e \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b <a href=\"https:\/\/world-it-planet.org\/\">IT-\u041f\u043b\u0430\u043d\u0435\u0442\u0430<\/a> \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c. \u0420\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 Oracle; \u043d\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0411\u0440\u0435\u0434\u043d\u044f \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/349560\/\">\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c<\/a>.<\/p>\n<p>\u041e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430. \u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0435\u043b \u0437\u0430\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f.<\/p>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0430\u0434 \u043f\u044f\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0434\u043d\u0438\u043c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u0437\u0430\u043e\u0447\u043d\u043e: \u043d\u0430 \u0440\u0430\u0437\u0434\u0443\u043c\u044c\u044f \u0431\u044b\u043b\u043e \u0434\u0430\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438. \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043d\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u044b\u043b \u0441\u0432\u043e\u0439 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u0440\u043e\u043a; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0448\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0435\u0433\u0447\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438) \u0438 \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 (\u0432\u0440\u0443\u0447\u043d\u0443\u044e). \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e, \u043e\u0447\u043d\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430.<\/p>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f 27 \u043c\u0430\u044f \u0432 \u0421\u043e\u0447\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0437 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0435\u0445\u0430\u0442\u044c \u0441\u043c\u043e\u0433\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c; \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u043e\u0441\u044c \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435. \u0417\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u043d\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u043e\u0431\u0449\u0435\u0439 \u0442\u0435\u043c\u043e\u0439, \u043d\u0430\u0432\u0435\u044f\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u043e\u0439 \u0413\u043e, \u0438 \u0441\u0442\u0440\u043e\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e \u043f\u043e\u0434\u0441\u0442\u0443\u043f\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439.<\/p>\n<p>\u042f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u043e\u0432. \u0425\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0445 \u0440\u0435\u0448\u0430\u0442\u044c, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u043d\u0430\u0441 \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433: \u0414\u0430\u0440\u044c\u044e \u0420\u0438\u0441\u0443\u0445\u0438\u043d\u0443, \u0432\u0437\u0432\u0430\u043b\u0438\u0432\u0448\u0443\u044e \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0441\u0435 \u043e\u0440\u0433\u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0415\u0432\u0433\u0435\u043d\u0438\u044f \u041c\u043e\u0440\u0433\u0443\u043d\u043e\u0432\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043c\u043e\u0433\u0430\u0432\u0448\u0438\u0445 \u043c\u043d\u0435 \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435.<\/p>\n<h2>\u0418 \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435?<\/h2>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c\u00bb. \u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0434\u0438\u043d \u0443\u043c\u0443\u0434\u0440\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u0443\u0441\u0442\u0430\u0432\u0430\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0437\u0435\u043b\u0435\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c: \u00ab\u0432\u044b \u043d\u0435 \u043d\u0430 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e!\u00bb \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0430\u0441\u0442\u043e \u043b\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SQL \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e <em>\u044d\u0434\u0430\u043a\u043e\u0433\u043e<\/em>?<\/p>\n<p>\u041d\u0435 \u0447\u0430\u0441\u0442\u043e. \u0417\u0430\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0447\u0430\u0449\u0435, \u0447\u0435\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0433\u043e\u0440\u043e\u0434\u044f\u0442 \u0446\u0438\u043a\u043b\u044b \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u043d\u0430 SQL. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e SQL \u043d\u0438 \u0443 \u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b \u043f\u0435\u0440\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c; \u0432\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0433\u043e-\u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e. \u041f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043d\u043e \u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0436\u0435 \u043d\u0430 SQL \u00ab\u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445\u00bb, \u00ab\u0430\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445\u00bb \u0437\u0430\u0434\u0430\u0447 \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u043b\u0435\u0433\u0447\u0435 \u2014 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u0440\u044c\u0435\u0440 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c.<\/p>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0441\u0435\u043b\u043e. \u041d\u0435\u043b\u044c\u0437\u044f \u0436\u0435 \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430\u043c\u0438 \u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438, \u043d\u0430\u0434\u043e \u0438 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c.<\/p>\n<h2>\u041a \u0434\u0435\u043b\u0443<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0443\u0441\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c, \u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<\/p>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 1. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 (\u041d\u0410\u041c).<\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u0434\u0430\u043d \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>nma<\/code> \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b:<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE nma(   id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,   a text NOT NULL,   b text NOT NULL );<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0434\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>nma.string<\/code>. (\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>current_setting<\/code>).<\/p>\n<p>\u0428\u0430\u0433 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 <code>a<\/code> \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435; \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u043b\u0435\u0432\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 <code>a<\/code> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 <code>b<\/code>. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0440\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430:<\/p>\n<ul>\n<li>\n<p><code>n<\/code> \u2014 \u043d\u043e\u043c\u0435\u0440 \u0448\u0430\u0433\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430; \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0448\u0430\u0433 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p><code>s<\/code> \u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430;<\/p>\n<\/li>\n<li>\n<p><code>id<\/code> \u2014 \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (<code>NULL<\/code> \u0434\u043b\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e<br \/> \u0448\u0430\u0433\u0430).<\/p>\n<\/li>\n<\/ul>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c 1000 \u0448\u0430\u0433\u0430\u043c\u0438.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443:<\/p>\n<pre><code class=\"pgsql\">INSERT INTO nma(a,b) VALUES   ('0++','1'),   ('1++','++0'),   ('++','1'); \u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438: SET nma.s = '1011++';<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> n |   s    | id \u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212+\u2212\u2212\u2212\u2212  0 | 1011++ |  1 | 101++0 |  2  2 | 10++00 |  2  3 | 1100   |  1 (4 rows)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437 \u041d\u0410\u041c \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b.<\/p>\n<p>\u042f \u0434\u0430\u043b \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438\u0437 \u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439: \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442 \u0428\u043a\u043e\u043b\u044b \u042e\u043d\u044b\u0445 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u041f\u0440\u043e\u0442\u0432\u0438\u043d\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u0432 \u041a\u0440\u0430\u0441\u043d\u043e\u044f\u0440\u0441\u043a\u0435. \u0422\u0430\u043c, \u043f\u0440\u0430\u0432\u0434\u0430, \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 (\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435). \u0410 \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 (\u043d\u0435 \u043d\u0430 SQL, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0430 \u043d\u0430 \u0411\u0435\u0439\u0441\u0438\u043a\u0435. \u0418\u043b\u0438 \u043d\u0430 \u041f\u0430\u0441\u043a\u0430\u043b\u0435, \u043d\u0435 \u043f\u043e\u043c\u043d\u044e \u0443\u0436\u0435). \u041a\u0441\u0442\u0430\u0442\u0438, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043b\u0438 \u043f\u0440\u043e \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0438 \u0435\u0433\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 \u043c\u043e\u0433 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u00ab\u0435\u0441\u043b\u0438 &#8230; \u0442\u043e\u00bb \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a. \u0412 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0448\u043b\u0438 \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u043e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438 \u0431\u044b \u0435\u0433\u043e, \u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0440\u0430\u0437\u0443, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u043f\u0430\u0434\u0430\u044f \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0442 ChatGPT. \u041d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u044f \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u0415\u0441\u043b\u0438 (\u0442\u043e\u0447\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430) \u0418\u0418 \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u0449\u0435\u043b\u043a\u0430\u0442\u044c \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435. \u041d\u043e \u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b \u0441\u0430\u043c\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u0435, \u043f\u043e-\u043b\u044e\u0431\u043e\u043c\u0443.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435. \u0421\u0442\u0440\u043e\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435, \u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u043b \u0437\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b.<\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>replace<\/code>. \u041e\u043d\u0430 \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0430\u044f. \u041f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 <code>overlay<\/code>, \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0438 \u0441\u043a\u043b\u0435\u0438\u0442\u044c \u0438\u0445.<\/p>\n<p>\u0418 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>LIKE<\/code>, \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0432\u0430\u044f \u043a \u043d\u0435\u0439 \u00ab\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b\u00bb. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0437\u043d\u0430\u043a \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430. \u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0447\u0440\u0435\u0432\u0430\u0442\u0430\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c SQL-\u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0437\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/15\/functions-string\">\u0430\u0441\u0441\u043e\u0440\u0442\u0438\u043c\u0435\u043d\u0442 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/a>.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0435 <code>UNION<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>UNION ALL<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e <code>UNION<\/code> \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d \u0441 \u043b\u0438\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0442. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u0445 \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u043b\u043e\u0448\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0433\u043b\u0430 \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0438 \u0434\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430, \u0430 \u0437\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u041f\u0440\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f. \u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442: \u00ab\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u0443\u0434\u0430\u0447\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0435\u0433\u043e \u0442\u043e\u043d\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0432\u043e\u0438\u0442\u044c \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0431\u0430\u043b\u043b\u044b>.<\/p>\n<p>\u0421 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0438 \u0443 \u043a\u043e\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e (\u043a\u0442\u043e \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f \u2014 \u0421\u0421\u0417\u0411), \u0430 \u0432\u043e\u0442 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438? \u041f\u043b\u043e\u0445\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c. \u041d\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2014 \u0442\u043e\u0436\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u0438 \u043c\u0430\u043b\u043e: \u0432\u0435\u0434\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0439\u0442\u0438, \u0432 \u0447\u0435\u043c \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u041d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442? \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435.<\/p>\n<p>\u0425\u0440\u0435\u0441\u0442\u043e\u043c\u0430\u0442\u0438\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f (\u043d\u0430\u0441\u0447\u0438\u0442\u0430\u043b \u0442\u0430\u043a\u0438\u0445 \u0448\u0442\u0443\u043a \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c):<\/p>\n<pre><code class=\"pgsql\">n + 1 AS n -- \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 1<\/code><\/pre>\n<p>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0442\u043e, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0432\u0435\u0440\u0445\u043d\u0435\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0442\u043e\u043d\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f. \u0421\u043a\u0430\u0436\u0435\u043c, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 \u00ab\u043e\u0442\u043b\u0438\u0447\u043d\u043e\u00bb \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>replace<\/code> \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u043f\u043e\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u00ab\u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e-\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u00bb.<\/p>\n<p>\u041d\u0443 \u0438 \u0445\u0432\u0430\u0442\u0438\u0442 \u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435. \u0412\u043e\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043d\u0430\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0430\u043b\u043b\u043e\u0432:<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0410\u043d\u043d\u044b \u0413\u043b\u0430\u0437\u0430\u0447\u0435\u0432\u043e\u0439 (\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">--\u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044e WITH RECURSIVE markov_steps(n, s, id) AS (   --\u0437\u0430\u0434\u0430\u0435\u043c \u0431\u0430\u0437\u0443 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438   SELECT 0, current_setting('nma.string'), NULL::integer   UNION ALL   --\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443   --\u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e   --overlay \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e replace \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0430 regexp_replace \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u0438\u0440\u043d\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u0430\u043a \u043c\u0435\u0442\u0430\u0441\u0438\u043c\u0432\u043e\u043b\u044b   SELECT *   FROM (SELECT n + 1 n, overlay(s placing nma.b from strpos(s, nma.a) for length(nma.a)), nma.id                 FROM markov_steps                 JOIN (SELECT * FROM nma) nma ON position(nma.a IN s) > 0                 --\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e                 ORDER BY id                 LIMIT 1) take_first   --\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 1000 \u0448\u0430\u0433\u043e\u0432   --(\u0431\u0430\u0437\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0435 \u0448\u0430\u0433\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0448\u0430\u0433\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430)   WHERE n &lt;= 1000 ) --\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 SELECT * FROM markov_steps;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 2. \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0441\u044f\u0446.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u043e\u043c\u0435\u0440 \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>calendar.month<\/code> (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>MM<\/code>), \u043d\u043e\u043c\u0435\u0440 \u0433\u043e\u0434\u0430 \u2014 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>calendar.year<\/code> (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>YYYY<\/code>).<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u043c\u044c \u0441\u0442\u0440\u043e\u043a \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>n<\/code> \u2014 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438, \u043e\u0442 1 (\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a) \u0434\u043e 7 (\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435);<\/p>\n<\/li>\n<li>\n<p><code>calendar<\/code> \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0434\u043d\u044e \u043d\u0435\u0434\u0435\u043b\u0438. \u0421\u0442\u0440\u043e\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<br \/>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043d\u044f \u043d\u0435\u0434\u0435\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u0438 \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b;<br \/>&#8212; \u043f\u0440\u043e\u0431\u0435\u043b;<br \/>&#8212; \u043d\u043e\u043c\u0435\u0440\u0430 \u0434\u043d\u0435\u0439 (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0434\u043e \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432), \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<pre><code class=\"pgsql\">SET calendar.year=2023; SET calendar.month=4;<\/code><\/pre>\n<p>\u0412 \u043b\u043e\u043a\u0430\u043b\u0438 <code>en_US<\/code> \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> n |      calendar \u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212  1 | Mon     3 10 17 24  2 | Tue     4 11 18 25  3 | Wed     5 12 19 26  4 | Thu     6 13 20 27  5 | Fri     7 14 21 28  6 | Sat  1  8 15 22 29  7 | Sun  2  9 16 23 30 (7 rows)<\/code><\/pre>\n<p>\u0412 \u043b\u043e\u043a\u0430\u043b\u0438 <code>ru_RU<\/code> \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> n |     calendar \u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212  1 | \u041f\u043d     3 10 17 24  2 | \u0412\u0442     4 11 18 25  3 | \u0421\u0440     5 12 19 26  4 | \u0427\u0442     6 13 20 27  5 | \u041f\u0442     7 14 21 28  6 | \u0421\u0431  1  8 15 22 29  7 | \u0412\u0441  2  9 16 23 30 (7 rows)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0438\u043a\u043e\u043c \u0441 \u043d\u0435\u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0435\u043d \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0430\u0445 \u043f\u043e SQL, \u043d\u0443 \u0438 \u044f \u043d\u0435 \u0443\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0437\u044e\u043c\u0438\u043d\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c, \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u044b\u043f\u0430\u043b\u0438\u0441\u044c. \u041a\u0442\u043e-\u0442\u043e \u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043b, \u043a\u0442\u043e-\u0442\u043e \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 (\u0443\u0433\u0430\u0434\u0430\u0439\u0442\u0435, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043d\u0435\u043f\u0430\u043b\u044c\u0441\u043a\u0438\u0439). \u0425\u043e\u0442\u044f \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 <code>TM<\/code> \u043a <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/15\/functions-formatting#FUNCTIONS-FORMATTING-DATETIME-TABLE\">\u043c\u0430\u0441\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/a>.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0434\u0432\u043e\u0445\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u0433\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c, \u0434\u0430 \u0438 \u0441\u0430\u043c \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0433\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u00ab\u0441\u0435\u0442\u043a\u0443\u00bb \u0434\u043d\u0435\u0439 (\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0432 \u043c\u0435\u0441\u044f\u0446\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0434\u0435\u043b\u044c) \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438.<\/p>\n<p>\u041a\u0442\u043e-\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0435\u0442\u043a\u0443 \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0438\u0445 \u0437\u0430\u0442\u0435\u043c \u0434\u0430\u0442\u0430\u043c\u0438; \u043a\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u00ab\u0432 \u0443\u043c\u0435\u00bb, \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u044f \u0434\u0430\u0442\u044b \u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2014 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u044b\u043b\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0446\u0438\u0444\u0440\u044b \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u0421\u0442\u043e\u0438\u0442 \u043b\u0443\u0447\u0448\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0431\u0430\u043b\u043b\u043e\u0432 \u0441\u0433\u043e\u0440\u0435\u043b\u043e \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0412 \u0437\u0430\u0434\u0430\u043d\u0438\u0438 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e: \u00ab\u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432\u00bb, \u0430 \u043f\u0440\u043e <code>trim<\/code> \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u0430\u0431\u044b\u043b\u0438.<\/p>\n<p>\u041d\u0443 \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0442\u0443\u0442 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>generate_series<\/code>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u041c\u0430\u043a\u0441\u0438\u043c\u0430 \u041b\u043e\u0433\u0432\u0438\u043d\u0435\u043d\u043a\u043e (\u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">with dates as (select d.start_date,                       d.start_date + interval '1' month - interval '1' day as stop_date,                       -- \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0434\u043d\u044f \u043d\u0435\u0434\u0435\u043b\u0438 1-\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0442\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c\u0438 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c                       -- \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0441\u043b\u0435\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c                       to_char(d.start_date, 'ID')::integer                 as first_num_of_week                from (select to_timestamp(format('%s-%s', CURRENT_SETTING('calendar.year'),                                                 CURRENT_SETTING('calendar.month')),                                          'yyyy-mm') as start_date) d) select cl.num_day_of_week as n, format('%s %s', cl.day_of_week, cl.calendar_str) as calendar from (select dl.num_day_of_week,              dl.day_of_week,              -- \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c 2 \u043f\u0440\u043e\u0431\u0435\u043b\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u043d\u044f\u043c \u043d\u0435\u0434\u0435\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0438\u043c, \u0447\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0434\u043d\u044f \u043d\u0435\u0434\u0435\u043b\u0438 1-\u0433\u043e \u0447\u0438\u0441\u043b\u0430              -- \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0434\u043d\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430              concat(case when dl.num_day_of_week &lt; dl.first_num_of_week then '   ' end,                  -- \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e lpad \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u043b\u0435\u0432\u0430 \u0434\u043e 2\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0422\u0417                     string_agg(lpad(dl.day_of_month::text, 2, ' '), ' ' order by dl.day_of_month)) as calendar_str       from (select extract('day' from dt)     as day_of_month,                    -- \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 TM, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043d\u044f \u043d\u0435\u0434\u0435\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u0438                    to_char(dt, 'TMDy')        as day_of_week,                    to_char(dt, 'ID')::integer as num_day_of_week,                    d.first_num_of_week             from dates d                      cross join generate_series(d.start_date, d.stop_date, interval '1' day) as dt) dl       group by dl.num_day_of_week, dl.day_of_week, dl.first_num_of_week       order by dl.num_day_of_week) cl;><\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 3. \u0410\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0443\u043c\u043c\u0443 \u0441\u043a\u043b\u0430\u0434\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0430\u0441\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u043c FIFO.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u0437\u0430\u043a\u0443\u043f\u0430\u0435\u0442 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b \u044f\u0449\u0438\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u043f\u0442\u043e\u0432\u043e\u043c \u0441\u043a\u043b\u0430\u0434\u0435. \u041e\u043d \u043f\u0440\u043e\u0434\u0430\u0435\u0442 \u0438\u0445, \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044f \u043d\u0430 \u0432\u0438\u0442\u0440\u0438\u043d\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u0430\u0440\u044c\u043a\u0430, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0434\u043d\u044f \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0438\u0437 \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u044f\u0449\u0438\u043a\u043e\u0432 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u043b\u044e\u0431\u0438\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438 \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0447\u0435\u0440\u043e\u043c \u0432 \u043b\u0430\u0440\u044c\u043a\u0435 \u043d\u0435\u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u043e\u0432\u0430\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u0438 \u0431\u0435\u0440\u0443\u0442 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b \u0438\u0437 \u044f\u0449\u0438\u043a\u043e\u0432 \u0432 \u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043f\u0440\u0438\u0432\u043e\u0437\u0438\u043b \u044d\u0442\u0438 \u044f\u0449\u0438\u043a\u0438.<\/p>\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>oranges<\/code> \u043f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0435 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u0435 (\u0434\u0430\u0442\u0443, \u043c\u0430\u0441\u0441\u0443 \u043d\u0435\u0442\u0442\u043e \u0432 \u043a\u0438\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0438 \u0446\u0435\u043d\u0443 \u0437\u0430 \u043a\u0438\u043b\u043e\u0433\u0440\u0430\u043c\u043c) \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0432 \u043b\u0430\u0440\u044c\u043a\u0435 (\u0442\u043e \u0436\u0435, \u043d\u043e \u0441 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u043e\u0439; \u0446\u0435\u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u043d\u043e \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u0443 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u0435\u0439).<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE oranges(   ts timestamptz PRIMARY KEY,   net_weight numeric NOT NULL,   price numeric(10,2) NOT NULL CHECK (price > 0) );<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446 amount \u0438 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0432 \u043b\u0430\u0440\u044c\u043a\u0435, \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043e \u043a\u043e\u043f\u0435\u0435\u043a.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"pgsql\">-- \u0437\u0430\u043a\u0443\u043f\u043a\u0438: \u0442\u0440\u0438 \u044f\u0449\u0438\u043a\u0430 INSERT INTO oranges VALUES   (current_timestamp - interval '3 day', +10.0, 40.00),   (current_timestamp - interval '2 day', +11.0, 60.00),   (current_timestamp - interval '1 day',  +9.0, 50.00); -- \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (\u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c) INSERT INTO oranges   SELECT current_timestamp - interval '2 day' - n*interval '5 min',          -1.0, 100.00   FROM generate_series(1, 7) n; -- \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (\u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043d\u044c) INSERT INTO oranges   SELECT current_timestamp - interval '1 day' - n*interval '5 min',          -1.0, 110.00   FROM generate_series(1, 6) n; -- \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (\u0442\u0440\u0435\u0442\u0438\u0439 \u0434\u0435\u043d\u044c) INSERT INTO oranges   SELECT current_timestamp - n*interval '5 min',          -1.0, 120.00   FROM generate_series(1, 5) n;<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> amount \u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212  630.00 (1 rows)<\/code><\/pre>\n<p>(\u041f\u0435\u0440\u0432\u044b\u0439 \u044f\u0449\u0438\u043a \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u044f\u0449\u0438\u043a \u043f\u043e\u043a\u0430 \u043f\u043e\u043b\u043e\u043d.)<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0435\u0439 \u0438 \u0441\u043a\u043b\u0430\u0434\u0441\u043a\u0438\u043c \u0443\u0447\u0435\u0442\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0433\u0440\u0443\u0441\u0442\u043d\u043e, \u044f \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u0430\u043c\u0438, \u043d\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b, \u043a\u0443\u0434\u0430 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0427\u0435\u0431\u0443\u0440\u0430\u0448\u043a\u0443.<\/p>\n<p>\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0432 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u0435\u043d, \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0443\u043c\u043c\u0443 \u043d\u0430\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u043c \u0438\u0442\u043e\u0433\u043e\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043b\u0430\u0434\u0435\u0442\u044c <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/15\/tutorial-window\">\u043e\u043a\u043e\u043d\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438<\/a>. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">\u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u043e (\u043d\u0430\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u043c \u0438\u0442\u043e\u0433\u043e\u043c)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0441\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0434\u0430\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0440\u0430\u0437\u043d\u0438\u0446\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\"><strong>A<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>B = sum(A) OVER (ORDER BY &#8230;)<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>C<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>D = B &#8212; C<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td>\n<p align=\"left\">-1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"left\">9<\/p>\n<\/td>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td>\n<p align=\"left\">3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">11<\/p>\n<\/td>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0443\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430 (D &lt; 0):<br \/>\u044d\u0442\u043e\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438, \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u044f\u0449\u0438\u043a\u0435 (0 \u2264 D &lt; A):<br \/>\u044d\u0442\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 \u0443\u0436\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e, \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0440\u0430\u0432\u0435\u043d \u0440\u0430\u0437\u043d\u0438\u0446\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u044f\u0449\u0438\u043a\u0435 (D \u2265 A):<br \/>\u0434\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 \u0434\u0435\u043b\u043e \u043d\u0435 \u0434\u043e\u0448\u043b\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u00ab\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439\u00bb, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0434\u0438\u043d \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0440\u0435\u0448\u0430\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<p>\u041d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c. \u041d\u0430\u0434\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c!<\/p>\n<p>\u041c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u044b\u043b\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c. \u0415\u0433\u043e \u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u043b\u0438, \u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u043d\u043e, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0442\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u043a\u043e\u043f\u0435\u0435\u0447\u043a\u0438.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0435\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043d\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u044b\u0439 \u0432 \u0437\u0430\u0434\u0430\u043d\u0438\u0438. \u0427\u0442\u043e, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0432\u0435\u0446 \u043e\u0448\u0438\u0431\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0434\u0430\u0436, \u0447\u0435\u043c \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u0439? \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0430 \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043c\u0438\u043d\u0443\u0441. \u041d\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043d\u0430\u0447\u0435 \u0438 \u043e\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u044f, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0437\u0430\u0447\u0435\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0414\u0430\u043d\u0438\u043b\u0430 \u0410\u043d\u0442\u043e\u043d\u043e\u0432\u0430 (\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">\/*  \u0421\u0443\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f:     - \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0441 \u043d\u0430\u0434\u0431\u0430\u0432\u043a\u043e\u0439 \u0434\u043b\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432.         \u041f\u0440\u0438\u043c\u0435\u0440: \u0437\u0430\u043a\u0443\u043f\u0438\u043b\u0438 \u044f\u0449\u0438\u043a\u0438 \u043f\u043e 5, 6, 7 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432. \u0421\u0443\u043c\u043c\u0430 \u0441 \u043d\u0430\u0434\u0431\u0430\u0432\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442: 5, 11, 18.      - \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043f\u0440\u043e\u0434\u0430\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430.         \u041f\u0440\u0438\u043c\u0435\u0440: \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043f\u0440\u043e\u0434\u0430\u043b\u0438 8 \u043a\u0433 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432.      - \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c:         \u0415\u0441\u043b\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0411\u041e\u041b\u042c\u0428\u0415 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0441\u0443\u043c\u043c\u044b, \u0442\u043e \u044d\u0442\u043e\u0442 \u044f\u0449\u0438\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e             \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d \u0438 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043d\u0430\u0441. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u044f\u0449\u0438\u043a \u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439.         \u0415\u0441\u043b\u0438 \u041c\u0415\u041d\u042c\u0428\u0415, \u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432 \u044f\u0449\u0438\u043a\u0435, \u043b\u0438\u0431\u043e \u044f\u0449\u0438\u043a \u043f\u043e\u043b\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442.         \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u041c\u0418\u041d\u0418\u041c\u0423\u041c(\u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0434\u0441\u0443\u043c\u043c\u0430 \u043c\u0438\u043d\u0443\u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0435\u0433\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0432 \u044f\u0449\u0438\u043a\u0435).         \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u0435\u043d\u044c\u0448\u0435, \u0442\u043e \u044f\u0449\u0438\u043a \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d \u043f\u043e\u043b\u043d\u044b\u0439.         \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430. 5, 6, 7 - \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0432 \u044f\u0449\u0438\u043a\u0435. 8 - \u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432:             5:  8 > 5 - \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u044f\u0449\u0438\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d             6: \u041c\u0418\u041d(11 - 8, 6) = 3 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c             7: \u041c\u0418\u041d(18 - 8, 7) = 7 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c (\u044f\u0449\u0438\u043a \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u043b\u0438)      - \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u0443\u043c\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u043f\u0443\u0442\u0435\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430 \u0446\u0435\u043d\u0443.  *\/ with remain_amount_in_boxes as (     select case            when sum(net_weight) over (order by ts) >                     (select coalesce(-sum(net_weight), 0) from oranges where net_weight &lt; 0)            then price * least(sum(net_weight) over (order by ts) -                               (select coalesce(-sum(net_weight), 0) from oranges where net_weight &lt; 0), net_weight)            end as sum_by_box     \/*      \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u043b\u043e\u0432\u0438\u044f when \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u0435 \u044f\u0449\u0438\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b.         \u041f\u043e\u0434\u0441\u0443\u043c\u043c\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u044f\u0449\u0438\u043a\u0430 > \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0430\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430.         \u0415\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u043e \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c, \u0438\u043d\u0430\u0447\u0435 \u043d\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442.      \u0412 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u0443\u043c\u043c\u0443 \u043a\u0438\u043b\u043e\u0433\u0440\u0430\u043c\u043c \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432.      \u0412 then \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u043e\u0432 \u0432 \u044f\u0449\u0438\u043a\u0435.         \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430 \u043e\u043f\u0438\u0441\u0430\u043b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.      \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e ts \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0443\u043c\u043c\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 FIFO, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f         \u0441\u0430\u043c\u044b\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0432\u0435\u0437\u0435\u043d\u043d\u044b\u0435 \u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u044b.      Coalesce \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u043b\u0438.      \u041c\u0438\u043d\u0443\u0442 \u043f\u0435\u0440\u0435\u0434 sum \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u0447\u0442\u043e \u0438\u0437 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e         \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u043e\u0435 \u0438 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f.      *\/     from oranges     where net_weight > 0     \/*      \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0432\u0435\u0437\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u043e\u0432\u0430\u0440\u0443,         \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0443\u043c\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u043e\u0432\u0430\u0440\u043e\u0432.      *\/ ) select coalesce(round(sum(sum_by_box), 2), 0) as amount from remain_amount_in_boxes; \/*     \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e sum \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u043c\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0442\u043e\u0432\u0430\u0440\u0430 \u0432 \u044f\u0449\u0438\u043a\u0430\u0445.     \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e round \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0434\u043e \u043a\u043e\u043f\u0435\u0435\u043a.     \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e coalesce \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u0442\u043e\u0432\u0430\u0440\u044b \u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \"0\";  *\/<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 4. \u0417\u043c\u0435\u0439\u043a\u0430<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u00ab\u0437\u043c\u0435\u0439\u043a\u0443\u00bb \u0438\u0437 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0438\u0433\u0440\u044b.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>snake<\/code> \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u00ab\u0437\u043c\u0435\u0439\u043a\u0438\u00bb \u043e\u0442 \u0445\u0432\u043e\u0441\u0442\u0430 \u0434\u043e \u0433\u043e\u043b\u043e\u0432\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430. \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u2014 10\u00d710 \u0441 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442 0 \u0434\u043e 9.<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE snake(   id integer NOT NULL GENERATED ALWAYS AS IDENTITY,   x integer NOT NULL CHECK (x BETWEEN 0 AND 9),   y integer NOT NULL CHECK (y BETWEEN 0 AND 9) );<\/code><\/pre>\n<p>\u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043b\u0435\u0433\u0430\u0435\u0442 \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0441\u0430\u043c\u043e\u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0432\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0430:<\/p>\n<ul>\n<li>\n<p>line \u2014 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>snake \u2014 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043b\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041f\u0443\u0441\u0442\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439 \u00ab<code>.<\/code>\u00bb, \u0433\u043e\u043b\u043e\u0432\u0430 \u0437\u043c\u0435\u0439\u043a\u0438 \u2014 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u00ab<code>\u00f6<\/code>\u00bb, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0435\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u2014 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u00ab<code>\u2502<\/code>\u00bb, \u00ab<code>\u2500<\/code>\u00bb, \u00ab<code>\u250c<\/code>\u00bb, \u00ab<code>\u2510<\/code>\u00bb, \u00ab<code>\u2514<\/code>\u00bb \u0438 \u00ab<code>\u2518<\/code>\u00bb \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"pgsql\">INSERT INTO snake(x,y) VALUES   (4,4), (4,5),   (3,5), (2,5),   (2,4), (2,3), (2,2),   (3,2), (4,2), (5,2), (6,2),   (6,3), (6,4), (6,5), (6,6);<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> line |   snake \u2212\u2212\u2212\u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212     0 | ..........     1 | ..........     2 | ..\u250c\u2500\u2500\u2500\u2510...     3 | ..\u2502...\u2502...     4 | ..\u2502.\u2502.\u2502...     5 | ..\u2514\u2500\u2518.\u2502...     6 | ......\u00f6...     7 | ..........     8 | ..........     9 | .......... (10 rows)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u0437\u043c\u0435\u0439\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0438 \u043a\u0440\u043e\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0434\u0432\u043e\u0445\u0430. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0437\u0430 \u0445\u0432\u043e\u0441\u0442\u043e\u043c \u043d\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0437\u043c\u0435\u0439\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0437\u0442\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 (\u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435), \u043d\u043e \u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e, \u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u0438 \u0436\u0435 \u0441\u0430\u043c\u044b\u043c\u0438 (\u0440\u043e\u043c\u0435 \u0445\u0432\u043e\u0441\u0442\u0430 \u0438 \u0433\u043e\u043b\u043e\u0432\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e).<\/p>\n<p>\u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 (\u0437\u043c\u0435\u0439\u043a\u0430 \u043f\u043e\u043b\u0437\u0435\u0442 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e), \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u043c. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0443\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0447\u0438\u0441\u043b\u043e. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0438\u043a\u0442\u043e \u0438\u0437 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043d\u0435 \u0441\u0442\u0430\u043b \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438, \u0441\u043a\u0430\u0436\u0435\u043c, \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443 \u043d\u0430 \u043c\u0438\u043d\u0443\u0441. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u0438 \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u0447\u0442\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0445 \u0431\u0430\u043b\u043b\u0430\u0445 \u043d\u0435 \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443).<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0414\u043c\u0438\u0442\u0440\u0438\u044f \u0416\u0430\u0432\u043e\u0440\u043e\u043d\u043a\u043e\u0432\u0430 (\u0422\u043e\u043c\u0441\u043a)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">with directions as (     select         id, x, y,         -- A direction that the snake moved from a cell in.         -- Because the snake can not move diagonally         -- x and y can not have non-zero difference         -- at the same time         case lead(x, 1, x) over (order by id) - x             when -1 then 'L'             when 1 then 'R'             else case lead(y, 1, y) over (order by id) - y                 when -1 then 'U'                 when 1 then 'D'                 else 'H'             end         end as dir     from snake ),  segments as (     select         id, x, y,         -- because of default value of lag function         -- the snake's tail is mapped to one of the first 4 cases         case lag(dir, 1, dir) over (order by id) || dir             when 'UU' then '\u2502'             when 'DD' then '\u2502'             when 'RR' then '\u2500'             when 'LL' then '\u2500'             when 'RU' then '\u2518'             when 'DL' then '\u2518'             when 'RD' then '\u2510'             when 'UL' then '\u2510'             when 'UR' then '\u250c'             when 'LD' then '\u250c'             when 'LU' then '\u2514'             when 'DR' then '\u2514'             -- 'LR', 'RL', 'UD', 'DU' are impossible             else '\u00f6'         end as seg     from directions ) select         t1.line,         string_agg(             coalesce(s.seg, '.'),             ''             -- Order cells in a row by column             order by col         ) as snake     -- Create empty cells     from (select generate_series(0, 9)) as t1(line)     join (select generate_series(0, 9)) t2(col) on true     -- Insert the snake segments into the cells     left join segments s on s.x = t2.col and s.y = t1.line     group by t1.line     order by t1.line;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 5. \u0411\u0430\u043d\u043a\u043e\u043c\u0430\u0442<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u00ab\u0432\u044b\u0434\u0430\u044e\u0449\u0438\u0439\u00bb \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u0443\u043f\u044e\u0440.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u043e\u043c\u0438\u043d\u0430\u043b\u044b \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0431\u0430\u043d\u043a\u043e\u043c\u0430\u0442\u0435 \u043a\u0443\u043f\u044e\u0440 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE atm(   face_value integer PRIMARY KEY CHECK (face_value > 0),   quantity integer NOT NULL CHECK (quantity >= 0) );<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>atm.amount<\/code>; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0446\u0435\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443.<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u044b \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0443\u043f\u044e\u0440, \u0432 \u0441\u0443\u043c\u043c\u0435 \u0434\u0430\u044e\u0449\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u0441\u0443\u043c\u043c\u0443. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0443\u043f\u044e\u0440 \u0431\u044b\u043b\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"pgsql\">SET atm.amount = 9300; INSERT INTO atm(face_value,quantity) VALUES   (5000,10), (2000,10),   (1000,10),  (500,10), (100,10);<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> face_value | quantity \u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212        5000 |        1        2000 |        2         100 |        3 (3 rows)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0447\u0430\u0441\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u044b \u043a\u0440\u0430\u0442\u043d\u044b, \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u0443\u043f\u044e\u0440 \u043a \u043c\u0435\u043b\u043a\u0438\u043c. \u0422\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/edu.postgrespro.ru\/dev2\/dev2_16_ext_aggregates.html\">\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d<\/a> \u0443 \u043d\u0430\u0441 \u0432 \u043a\u0443\u0440\u0441\u0435 DEV2-12; \u043e\u043d \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043a\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041d\u043e \u043d\u043e\u043c\u0438\u043d\u0430\u043b\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u043d\u044b\u043c\u0438. \u0421\u043a\u0430\u0436\u0435\u043c, \u043a\u0443\u043f\u044e\u0440\u0430\u043c\u0438 \u0432 5000 \u0438 2000 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c 6000, \u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u044f\u0442\u0435\u0440\u043a\u0438, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0430\u0440 (<em>\u043d\u043e\u043c\u0438\u043d\u0430\u043b<\/em>, <em>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0443\u043f\u044e\u0440<\/em>), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u044b\u0434\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0443\u043c\u043c\u0443. \u041d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u0443\u043f\u044e\u0440\u044b, \u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043e\u0442 \u0431\u00f3\u043b\u044c\u0448\u0438\u0445 \u043a \u043c\u0435\u043d\u044c\u0448\u0438\u043c.<\/p>\n<p>\u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u0435\u0437 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0433\u0440\u0435\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0432\u044b\u0434\u0430\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0441\u0442\u043e\u0440\u0443\u0431\u043b\u0435\u0432\u043a\u0430\u043c\u0438. \u0422\u0435, \u043a\u0442\u043e \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0435 \u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0435\u0434\u043e\u0431\u0440\u0430\u043b\u0438 \u0431\u0430\u043b\u043b\u043e\u0432 \u0438\u0437-\u0437\u0430 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u042f\u043d\u0430 \u0421\u0435\u043d\u0438\u043d\u0430 (\u041c\u0438\u043d\u0441\u043a)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">-- This query performs some sort of backpack algorithm. Firstly it -- chooses some bill(let's call it's face_value a), takes all -- possible quantities of it and gets rows(sum, bills) like these: -- (a, {a}), (a * 2, {a, a}), (a * 3, {a, a, a}), ..., -- (a * n, {a, a, ..., a}). Then it chooses second bill and tries -- to add all possible quantities of it to all of currently -- existing arrays(second element in pair), so it just computes -- all possible bill combinations with total sum &lt;= atm.amount -- Then it takes pair with minimal array_length(i.e. with minimal -- number of bills) with sum = atm.amount, formats it and returns. WITH RECURSIVE index_to_atm AS (     SELECT row_number() OVER ()::INT AS index,            face_value,            quantity     FROM atm ), sums(sum, face_values, last_face_value_index) AS (     SELECT 0, '{}'::INT[], 0     UNION ALL     SELECT sum + face_value * quantity.quantity,            face_values || array_fill(face_value, ARRAY[quantity.quantity]),            index     FROM sums     JOIN index_to_atm ON last_face_value_index + 1 = index     CROSS JOIN generate_series(         0, least(index_to_atm.quantity,                (current_setting('atm.amount')::INT - sum) \/ face_value)) AS quantity ), face_values AS (     SELECT face_values FROM sums     WHERE sum = current_setting('atm.amount')::INT     ORDER BY array_length(face_values, 1)     LIMIT 1 ) SELECT unnest(face_values) AS face_value, count(*) AS quantity FROM face_values GROUP BY face_value;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0435, \u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0444\u0438\u043d\u0430\u043b\u0430.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/postgrespro\/articles\/742684\/\"> https:\/\/habr.com\/ru\/companies\/postgrespro\/articles\/742684\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u043b\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0441 \u043f\u043e \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b <a href=\"https:\/\/world-it-planet.org\/\">IT-\u041f\u043b\u0430\u043d\u0435\u0442\u0430<\/a> \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c. \u0420\u0430\u043d\u044c\u0448\u0435 \u043d\u0430 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 Oracle; \u043d\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0411\u0440\u0435\u0434\u043d\u044f \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/349560\/\">\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c<\/a>.<\/p>\n<p>\u041e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430. \u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0435\u043b \u0437\u0430\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f.<\/p>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0430\u0434 \u043f\u044f\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0434\u043d\u0438\u043c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u0437\u0430\u043e\u0447\u043d\u043e: \u043d\u0430 \u0440\u0430\u0437\u0434\u0443\u043c\u044c\u044f \u0431\u044b\u043b\u043e \u0434\u0430\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438. \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043d\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u044b\u043b \u0441\u0432\u043e\u0439 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u0440\u043e\u043a; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0448\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0435\u0433\u0447\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438) \u0438 \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 (\u0432\u0440\u0443\u0447\u043d\u0443\u044e). \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e, \u043e\u0447\u043d\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430.<\/p>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f 27 \u043c\u0430\u044f \u0432 \u0421\u043e\u0447\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0437 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0435\u0445\u0430\u0442\u044c \u0441\u043c\u043e\u0433\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c; \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u043e\u0441\u044c \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435. \u0417\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u043d\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u043e\u0431\u0449\u0435\u0439 \u0442\u0435\u043c\u043e\u0439, \u043d\u0430\u0432\u0435\u044f\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u043e\u0439 \u0413\u043e, \u0438 \u0441\u0442\u0440\u043e\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e \u043f\u043e\u0434\u0441\u0442\u0443\u043f\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439.<\/p>\n<p>\u042f \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u043e\u0432. \u0425\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0445 \u0440\u0435\u0448\u0430\u0442\u044c, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u043d\u0430\u0441 \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433: \u0414\u0430\u0440\u044c\u044e \u0420\u0438\u0441\u0443\u0445\u0438\u043d\u0443, \u0432\u0437\u0432\u0430\u043b\u0438\u0432\u0448\u0443\u044e \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u0441\u0435 \u043e\u0440\u0433\u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0415\u0432\u0433\u0435\u043d\u0438\u044f \u041c\u043e\u0440\u0433\u0443\u043d\u043e\u0432\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043c\u043e\u0433\u0430\u0432\u0448\u0438\u0445 \u043c\u043d\u0435 \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435.<\/p>\n<h2>\u0418 \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u0441\u0435?<\/h2>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c\u00bb. \u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0434\u0438\u043d \u0443\u043c\u0443\u0434\u0440\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u0443\u0441\u0442\u0430\u0432\u0430\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0437\u0435\u043b\u0435\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c: \u00ab\u0432\u044b \u043d\u0435 \u043d\u0430 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e!\u00bb \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0430\u0441\u0442\u043e \u043b\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SQL \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e <em>\u044d\u0434\u0430\u043a\u043e\u0433\u043e<\/em>?<\/p>\n<p>\u041d\u0435 \u0447\u0430\u0441\u0442\u043e. \u0417\u0430\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0447\u0430\u0449\u0435, \u0447\u0435\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0433\u043e\u0440\u043e\u0434\u044f\u0442 \u0446\u0438\u043a\u043b\u044b \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u043d\u0430 SQL. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e SQL \u043d\u0438 \u0443 \u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b \u043f\u0435\u0440\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c; \u0432\u0441\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0433\u043e-\u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e. \u041f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043d\u043e \u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0436\u0435 \u043d\u0430 SQL \u00ab\u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445\u00bb, \u00ab\u0430\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445\u00bb \u0437\u0430\u0434\u0430\u0447 \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u043b\u0435\u0433\u0447\u0435 \u2014 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u0440\u044c\u0435\u0440 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c.<\/p>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0441\u0435\u043b\u043e. \u041d\u0435\u043b\u044c\u0437\u044f \u0436\u0435 \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430\u043c\u0438 \u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438, \u043d\u0430\u0434\u043e \u0438 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c.<\/p>\n<h2>\u041a \u0434\u0435\u043b\u0443<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0443\u0441\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c, \u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<\/p>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 1. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u041c\u0430\u0440\u043a\u043e\u0432\u0430 (\u041d\u0410\u041c).<\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u0434\u0430\u043d \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>nma<\/code> \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b:<\/p>\n<pre><code class=\"pgsql\">CREATE TABLE nma(   id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,   a text NOT NULL,   b text NOT NULL );<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0434\u0430\u043d\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>nma.string<\/code>. (\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>current_setting<\/code>).<\/p>\n<p>\u0428\u0430\u0433 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 <code>a<\/code> \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435; \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u043b\u0435\u0432\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 <code>a<\/code> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 <code>b<\/code>. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0440\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430:<\/p>\n<ul>\n<li>\n<p><code>n<\/code> \u2014 \u043d\u043e\u043c\u0435\u0440 \u0448\u0430\u0433\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430; \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0448\u0430\u0433 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p><code>s<\/code> \u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430;<\/p>\n<\/li>\n<li>\n<p><code>id<\/code> \u2014 \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0448\u0430\u0433\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (<code>NULL<\/code> \u0434\u043b\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e<br \/> \u0448\u0430\u0433\u0430).<\/p>\n<\/li>\n<\/ul>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c 1000 \u0448\u0430\u0433\u0430\u043c\u0438.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443:<\/p>\n<pre><code class=\"pgsql\">INSERT INTO nma(a,b) VALUES   ('0++','1'),   ('1++','++0'),   ('++','1'); \u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438: SET nma.s = '1011++';<\/code><\/pre>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438:<\/p>\n<pre><code> n |   s    | id \u2212\u2212\u2212+\u2212\u2212\u2212\u2212\u2212\u2212\u2212\u2212+\u2212\u2212\u2212\u2212  0 | 1011++ |  1 | 101++0 |  2  2 | 10++00 |  2  3 | 1100   |  1 (4 rows)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437 \u041d\u0410\u041c \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b.<\/p>\n<p>\u042f \u0434\u0430\u043b \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438\u0437 \u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439: \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442 \u0428\u043a\u043e\u043b\u044b \u042e\u043d\u044b\u0445 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u041f\u0440\u043e\u0442\u0432\u0438\u043d\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0435 \u0432 \u041a\u0440\u0430\u0441\u043d\u043e\u044f\u0440\u0441\u043a\u0435. \u0422\u0430\u043c, \u043f\u0440\u0430\u0432\u0434\u0430, \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 (\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435). \u0410 \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 (\u043d\u0435 \u043d\u0430 SQL, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0430 \u043d\u0430 \u0411\u0435\u0439\u0441\u0438\u043a\u0435. \u0418\u043b\u0438 \u043d\u0430 \u041f\u0430\u0441\u043a\u0430\u043b\u0435, \u043d\u0435 \u043f\u043e\u043c\u043d\u044e \u0443\u0436\u0435). \u041a\u0441\u0442\u0430\u0442\u0438, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043b\u0438 \u043f\u0440\u043e \u041c\u0430\u0440\u043a\u043e\u0432\u0430 \u0438 \u0435\u0433\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 \u043c\u043e\u0433 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u00ab\u0435\u0441\u043b\u0438 &#8230; \u0442\u043e\u00bb \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a. \u0412 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0448\u043b\u0438 \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u043e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438 \u0431\u044b \u0435\u0433\u043e, \u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0440\u0430\u0437\u0443, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u043f\u0430\u0434\u0430\u044f \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0442 ChatGPT. \u041d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u044f \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u0415\u0441\u043b\u0438 (\u0442\u043e\u0447\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430) \u0418\u0418 \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u0449\u0435\u043b\u043a\u0430\u0442\u044c \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435. \u041d\u043e \u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b \u0441\u0430\u043c\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u0435, \u043f\u043e-\u043b\u044e\u0431\u043e\u043c\u0443.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435. \u0421\u0442\u0440\u043e\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435, \u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u043b \u0437\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b.<\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0447\u0430\u0441\u0442\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>replace<\/code>. \u041e\u043d\u0430 \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0430\u044f. \u041f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 <code>overlay<\/code>, \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0438 \u0441\u043a\u043b\u0435\u0438\u0442\u044c \u0438\u0445.<\/p>\n<p>\u0418 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>LIKE<\/code>, \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0432\u0430\u044f \u043a \u043d\u0435\u0439 \u00ab\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b\u00bb. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0437\u043d\u0430\u043a \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430. \u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0447\u0440\u0435\u0432\u0430\u0442\u0430\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c SQL-\u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0437\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/15\/functions-string\">\u0430\u0441\u0441\u043e\u0440\u0442\u0438\u043c\u0435\u043d\u0442 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/a>.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0435 <code>UNION<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>UNION ALL<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e <code>UNION<\/code> \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d \u0441 \u043b\u0438\u0448\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0442. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u0445 \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u043b\u043e\u0448\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0433\u043b\u0430 \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0438 \u0434\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430, \u0430 \u0437\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u041f\u0440\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f. \u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442: \u00ab\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u0443\u0434\u0430\u0447\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0435\u0433\u043e \u0442\u043e\u043d\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0432\u043e\u0438\u0442\u044c \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0431\u0430\u043b\u043b\u044b>.<\/p>\n<p>\u0421 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0438 \u0443 \u043a\u043e\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e (\u043a\u0442\u043e \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f \u2014 \u0421\u0421\u0417\u0411), \u0430 \u0432\u043e\u0442 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438? \u041f\u043b\u043e\u0445\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c. \u041d\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2014 \u0442\u043e\u0436\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u0438 \u043c\u0430\u043b\u043e: \u0432\u0435\u0434\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0439\u0442\u0438, \u0432 \u0447\u0435\u043c \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u041d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442? \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435.<\/p>\n<p>\u0425\u0440\u0435\u0441\u0442\u043e\u043c\u0430\u0442\u0438\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f (\u043d\u0430\u0441\u0447\u0438\u0442\u0430\u043b \u0442\u0430\u043a\u0438\u0445 \u0448\u0442\u0443\u043a \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c):<\/p>\n<pre><code class=\"pgsql\">n + 1 AS n -- \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 1<\/code><\/pre>\n<p>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0442\u043e, \u0447\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0432\u0435\u0440\u0445\u043d\u0435\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0442\u043e\u043d\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f. \u0421\u043a\u0430\u0436\u0435\u043c, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u043d\u0430 \u00ab\u043e\u0442\u043b\u0438\u0447\u043d\u043e\u00bb \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>replace<\/code> \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u043f\u043e\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u00ab\u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e-\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u00bb.<\/p>\n<p>\u041d\u0443 \u0438 \u0445\u0432\u0430\u0442\u0438\u0442 \u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435. \u0412\u043e\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043d\u0430\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0430\u043b\u043b\u043e\u0432:<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0410\u043d\u043d\u044b \u0413\u043b\u0430\u0437\u0430\u0447\u0435\u0432\u043e\u0439 (\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"pgsql\">--\u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044e WITH RECURSIVE markov_steps(n, s, id) AS (   --\u0437\u0430\u0434\u0430\u0435\u043c \u0431\u0430\u0437\u0443 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438   SELECT 0, current_setting('nma.string'), NULL::integer   UNION ALL   --\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443   --\u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e   --overlay \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e replace \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0430 regexp_replace \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u0438\u0440\u043d\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u0430\u043a \u043c\u0435\u0442\u0430\u0441\u0438\u043c\u0432\u043e\u043b\u044b   SELECT *   FROM (SELECT n + 1 n, overlay(s placing nma.b from strpos(s, nma.a) for length(nma.a)), nma.id                 FROM markov_steps                 JOIN (SELECT * FROM nma) nma ON position(nma.a IN s) > 0                 --\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e                 ORDER BY id                 LIMIT 1) take_first   --\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 1000 \u0448\u0430\u0433\u043e\u0432   --(\u0431\u0430\u0437\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0435 \u0448\u0430\u0433\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0448\u0430\u0433\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430)   WHERE n &lt;= 1000 ) --\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 SELECT * FROM markov_steps;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 2. \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c<\/h3>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0441\u044f\u0446.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u043e\u043c\u0435\u0440 \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>calendar.month<\/code> (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>MM<\/code>), \u043d\u043e\u043c\u0435\u0440 \u0433\u043e\u0434\u0430 \u2014 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>calendar.year<\/code> (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>YYYY<\/code>).<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u043c\u044c \u0441\u0442\u0440\u043e\u043a \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>n<\/code> \u2014 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438, \u043e\u0442 1 (\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a) \u0434\u043e 7 (\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435);<\/p>\n<\/li>\n<li>\n<p><code>calendar<\/code> \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0434\u043d\u044e \u043d\u0435\u0434\u0435\u043b\u0438. \u0421\u0442\u0440\u043e\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<br \/>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043d\u044f \u043d\u0435\u0434\u0435\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u0438 \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b;<br \/>&#8212; \u043f\u0440\u043e\u0431\u0435\u043b;<br \/>&#8212; \u043d\u043e\u043c\u0435\u0440\u0430 \u0434\u043d\u0435\u0439 (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0434\u043e \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432), \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<pre><code class=\"pgsql\">SET calendar.year=2023; SET calendar.month=4;<\/code><\/pre>\n<p>\u0412 \u043b\u043e\u043a\u0430\u043b\u0438 <code>en_US<\/code> \u0437\u0430\u043f\u0440\u043e\u0441<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-349219","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=349219"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349219\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=349219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=349219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=349219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}