|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Есть таблица «Т» с полями: IDF, DATA, А, Б, В и Г. IDF – внешний ключ DATA - текущий день Поля А, Б и В заносятся в таблицу пользователем каждый день. Нужно вычислить поле Г по следующему правилу: если В > 0.3 то Гi = Ai-Bi + Гj (Гj -берется из строки где IDFi = IDFj и DATAi = DATAi -1день, т.е. берется значение поля Г за предыдущий день из записи с совпадающим полем IDF ) если B <= 0.3 то Гi = Ai-Bi Помогите составить запрос для вычисления и занесения в таблицу поля Г. П.С. Если по задачи видно что БД составлена не правильно и какие-то поля нужно разнести по таблицам - пожалуйста укажите пути решения. Если нужно указать реальные поля и описать БД - сделаю. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2020, 15:48 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Выкладывайте CREATE TABLE для таблицы, исходное заполнение с форме INSERT INTO, и конечное состояние в виде форматированной таблицы. С пояснениями, как именно посчитаны значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2020, 17:02 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Мне нужно в таблице `fact` и `forecast` вычислять и заполнять поле `nest`. Это индекс пожарной опасности В.Г. Нестерова, он высчитывается так: Если apcp (i) (Осадки за текущий день) <= 0.3 (маленькие либо отсутствуют) то nest (i) = ( tmp(i) - dpt(i) ) * tmp(i) + Nest (j) (Разность температуры и точки запросы за текущий день, умножить на температуру за ткущий день + этот же показатель nest за предыдущий день. Т.е. если не было осадков показатель начинает накапливаться .) Если apcp (i) > 0.3 (если прошли осадки) то просто nest (i) = ( tmp(i) - dpt(i) ) * tmp(i) Поля tmp(i) dpt(i) apcp (i) и остальные необходимые поля заносятся в базу ежедневно методом LOAD (unidac, компонент uniload), для 50 000 точек, после чего нужно вычислить поле nest. БД SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Таблица фактических метеоданных о погоде на каждый день. -- ---------------------------- DROP TABLE IF EXISTS `fact`; CREATE TABLE `fact` ( `id` int(0) NOT NULL AUTO_INCREMENT, `id_poligons` int(0) NULL DEFAULT NULL, `gust` decimal(10, 3) NULL DEFAULT NULL, `tmp` decimal(10, 3) NULL DEFAULT NULL, `rh` decimal(10, 3) NULL DEFAULT NULL, `dpt` decimal(10, 3) NULL DEFAULT NULL, `vgrd` decimal(10, 3) NULL DEFAULT NULL, `ugrd` decimal(10, 3) NULL DEFAULT NULL, `mtmp` decimal(10, 3) NULL DEFAULT NULL, `apcp` decimal(10, 3) NULL DEFAULT NULL, `fdata` date NULL DEFAULT NULL, `nest` decimal(10, 0) NULL DEFAULT NULL, `apcpkbdi` decimal(10, 3) NULL DEFAULT NULL, `kbdi` decimal(10, 0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FK_forecast_polygons_id`(`id_poligons`) USING BTREE, CONSTRAINT `FK_fact_polygons_id` FOREIGN KEY (`id_poligons`) REFERENCES `polygons` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 194201 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Таблица прогнозных метеоданных на 14 дней. Перезаписывается каждый день, так как строится на фактических данных за текущий день. -- ---------------------------- DROP TABLE IF EXISTS `forecast`; CREATE TABLE `forecast` ( `id` int(0) NOT NULL AUTO_INCREMENT, `id_poligons` int(0) NULL DEFAULT NULL, `fdata` date NULL DEFAULT NULL, `frdata` date NULL DEFAULT NULL, `tmp` decimal(10, 3) NULL DEFAULT NULL, `tmax` decimal(10, 3) NULL DEFAULT NULL, `dpt` decimal(10, 3) NULL DEFAULT NULL, `rh` decimal(10, 3) NULL DEFAULT NULL, `vgrd` decimal(10, 3) NULL DEFAULT NULL, `ugrd` decimal(10, 3) NULL DEFAULT NULL, `gust` decimal(10, 3) NULL DEFAULT NULL, `apcp` decimal(10, 3) NULL DEFAULT NULL, `nest` decimal(10, 0) NULL DEFAULT NULL, `apcpkbdi` decimal(10, 3) NULL DEFAULT NULL, `kbdi` decimal(10, 0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FK_forecast_polygons_id`(`id_poligons`) USING BTREE, CONSTRAINT `FK_forecast_polygons_id` FOREIGN KEY (`id_poligons`) REFERENCES `polygons` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Координаты полигонов на карте, для каждого из которых в таблицах fact и forecast хранятся метеоданные. -- ---------------------------- DROP TABLE IF EXISTS `polygons`; CREATE TABLE `polygons` ( `id` int(0) NOT NULL, `coor_cntr_lon_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_cntr_lat_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_ld_lon_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_ld_lat_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_ru_lon_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_ru_lat_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_lu_lon_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_lu_lat_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_rd_lon_polygons` decimal(10, 7) NULL DEFAULT NULL, `coor_rd_lat_polygons` decimal(10, 7) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2020, 04:32 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Akina исходное заполнение в форме INSERT INTO А по фотографиям мы не лечим.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2020, 11:23 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Akina, Данные на 3 дня для 15 точек (полигонов): Таблица polygons INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (1, 120.5312485, 55.9070105, 120.4999970, 55.8757590, 120.5625000, 55.9382620, 120.4999970, 55.9382620, 120.5625000, 55.8757590); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (2, 120.5312485, 55.9695135, 120.4999970, 55.9382620, 120.5625000, 56.0007650, 120.4999970, 56.0007650, 120.5625000, 55.9382620); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (3, 120.5312485, 56.0320165, 120.4999970, 56.0007650, 120.5625000, 56.0632680, 120.4999970, 56.0632680, 120.5625000, 56.0007650); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (4, 120.5312485, 56.0945195, 120.4999970, 56.0632680, 120.5625000, 56.1257710, 120.4999970, 56.1257710, 120.5625000, 56.0632680); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (5, 120.5312485, 56.1570220, 120.4999970, 56.1257710, 120.5625000, 56.1882730, 120.4999970, 56.1882730, 120.5625000, 56.1257710); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (6, 120.5312485, 56.2195245, 120.4999970, 56.1882730, 120.5625000, 56.2507760, 120.4999970, 56.2507760, 120.5625000, 56.1882730); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (7, 120.5312485, 56.2820275, 120.4999970, 56.2507760, 120.5625000, 56.3132790, 120.4999970, 56.3132790, 120.5625000, 56.2507760); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (8, 120.5312485, 56.3445305, 120.4999970, 56.3132790, 120.5625000, 56.3757820, 120.4999970, 56.3757820, 120.5625000, 56.3132790); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (9, 120.5312485, 56.4070335, 120.4999970, 56.3757820, 120.5625000, 56.4382850, 120.4999970, 56.4382850, 120.5625000, 56.3757820); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (10, 120.5312485, 56.4695365, 120.4999970, 56.4382850, 120.5625000, 56.5007880, 120.4999970, 56.5007880, 120.5625000, 56.4382850); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (11, 120.5312485, 56.5320395, 120.4999970, 56.5007880, 120.5625000, 56.5632910, 120.4999970, 56.5632910, 120.5625000, 56.5007880); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (12, 120.5312485, 56.5945425, 120.4999970, 56.5632910, 120.5625000, 56.6257940, 120.4999970, 56.6257940, 120.5625000, 56.5632910); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (13, 120.5312485, 56.6570450, 120.4999970, 56.6257940, 120.5625000, 56.6882960, 120.4999970, 56.6882960, 120.5625000, 56.6257940); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (14, 120.5312485, 56.7195475, 120.4999970, 56.6882960, 120.5625000, 56.7507990, 120.4999970, 56.7507990, 120.5625000, 56.6882960); INSERT INTO `polygons`(`id`, `coor_cntr_lon_polygons`, `coor_cntr_lat_polygons`, `coor_ld_lon_polygons`, `coor_ld_lat_polygons`, `coor_ru_lon_polygons`, `coor_ru_lat_polygons`, `coor_lu_lon_polygons`, `coor_lu_lat_polygons`, `coor_rd_lon_polygons`, `coor_rd_lat_polygons`) VALUES (15, 120.5312485, 56.7820505, 120.4999970, 56.7507990, 120.5625000, 56.8133020, 120.4999970, 56.8133020, 120.5625000, 56.7507990); Таблица fact INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (1, 3.042, -8.915, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (1, -0.634, -6.504, 0.025, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (1, 4.370, -2.830, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (2, 3.042, -8.915, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (2, -0.634, -6.504, 0.025, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (2, 4.370, -2.830, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (3, 3.042, -8.915, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (3, -0.634, -6.504, 0.025, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (3, 4.370, -2.830, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (4, 3.042, -8.915, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (4, -0.634, -6.504, 0.025, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (4, 4.370, -2.830, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (5, 2.286, -7.475, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (5, -3.496, -7.944, 0.049, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (5, 6.494, -0.490, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (6, 2.286, -7.475, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (6, -3.496, -7.944, 0.049, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (6, 6.494, -0.490, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (7, 2.286, -7.475, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (7, -3.496, -7.944, 0.049, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (7, 6.494, -0.490, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (8, 2.286, -7.475, 0.054, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (8, -3.496, -7.944, 0.049, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (8, 6.494, -0.490, 0.010, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (9, 2.088, -11.975, 0.081, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (9, 2.084, -7.944, 0.012, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (9, 10.886, -0.670, 0.000, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (10, 2.088, -11.975, 0.081, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (10, 2.084, -7.944, 0.012, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (10, 10.886, -0.670, 0.000, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (11, 2.088, -11.975, 0.081, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (11, 2.084, -7.944, 0.012, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (11, 10.886, -0.670, 0.000, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (12, 2.088, -11.975, 0.081, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (12, 2.084, -7.944, 0.012, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (12, 10.886, -0.670, 0.000, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (13, 3.924, -5.855, 0.047, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (13, 0.752, -5.784, 0.000, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (13, 4.208, -2.650, 0.002, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (14, 3.924, -5.855, 0.047, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (14, 0.752, -5.784, 0.000, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (14, 4.208, -2.650, 0.002, '2020-03-10'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (15, 3.924, -5.855, 0.047, '2020-03-08'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (15, 0.752, -5.784, 0.000, '2020-03-09'); INSERT INTO `fact`(`id_poligons`, `tmp`, `dpt`, `apcp`, `fdata`) VALUES (15, 4.208, -2.650, 0.002, '2020-03-10'); ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:01 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
LДля первой даты (для которой не существует предыдущей) nest (i) = ( tmp(i) - dpt(i) ) * tmp(i) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:20 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Отлично. Вот fiddle с этими данными. Данные, правда, дерьмовые - ибо в алгоритме Zoola Если apcp (i) (Осадки за текущий день) <= 0.3 (маленькие либо отсутствуют) то ... Если apcp (i) > 0.3 (если прошли осадки) то а в данных максимальное это самое apcp равно 0,081... В общем, давайте так. Берёте fiddle, правите там исходные данные (найдите такие, чтобы первые 2-3 точки были с арср меньше 0,3, а следующие больше, или наоборот - сляпайте руками от балды, в конце концов), выкладываете ссылку на такой fiddle, а также даёте расчёт этого самого nest для этих 5-6 точек "вручную" (можно с пояснением, откуда что берётся). т.е. пусть будет 2-3 полигона - но минимум за неделю. К слову, таблица полигонов сама по себе тут нафиг не нужна. Дополнительно - укажите ТОЧНО версию MySQL. Это важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:39 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=195574ffd753e24259251067e29cc72b Вообще у меня стоит версия 8.0.19, но если указываю dbfiddle 8ку, почему-то с моей схемой не запускается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 19:48 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Zoola если указываю dbfiddle 8ку, почему-то с моей схемой не запускается Какой-то косяк на сервере. Починят... а мы пока с Машкой поработаем - благо разница невелика, а в этой задаче её и вовсе нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
fiddle . Специально выведены рядом посчитанное тобой значение, и получаемое в запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 20:55 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Большое спасибо. Если можно еще пара вопросов. Не могу понять работу вот этой части "PARTITION BY id_poligons ", погулил но не понял. Объясните ? И как мне теперь заполнить поле nest в свое базе. Нужно "завернуть" этот скрипт в оператор Update ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 14:46 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Zoola Не могу понять работу вот этой части "PARTITION BY id_poligons ", погулил но не понял. Объясните ? Код: sql 1.
переводится так: взять значение поля clear_nest из записи, которая имеет то же значение id_poligons, что и текущая, и идёт перед текущей при сортировке по fdata. Zoola как мне теперь заполнить поле nest в свое базе. Нужно "завернуть" этот скрипт в оператор Update ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
fiddle (db-fiddle.uk всё ещё крючит...). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 15:10 |
|
Помогите написать запрос.
|
|||
---|---|---|---|
#18+
Akina, Извини, ошибся и предоставил не верный ручной расчет для nest (рукалицо). В случаи apcp > 0.3 я прибавлял clear_nest из предыдущей строки а нужно предыдущее значение самого поля calculated_nest. Вот верные расчеты https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=359ad1042a663ea4ad08b9228129f66d Я попытался нагородить такое : код WITH cte AS ( SELECT id_poligons, tmp, dpt, apcp, fdata, nest, null as calculated_nest, (tmp-dpt)*tmp as clear_nest FROM fact ) SELECT id_poligons, tmp, dpt, apcp, fdata, clear_nest, nest, CASE WHEN apcp <= 0.3 THEN clear_nest + COALESCE(LAG( calculated_nest ) OVER (PARTITION BY id_poligons ORDER BY fdata), 0) ELSE clear_nest END as calculated_nest FROM cte ORDER BY id_poligons, fdata; Но работает не правильно, потому, что видимо значений calculated_nest не существует до конца выполнения скрипта. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 19:50 |
|
|
start [/forum/topic.php?fid=47&msg=39945562&tid=1828640]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 249ms |
0 / 0 |