|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
Доброго вечера. Сразу говорю что я новичок. Использую MySQL, не могу понять как всё логичнее выстроить и составить такой запрос на расчёт. Нужно фиксировать плотность разрастания растений. Она становиться всё время больше. Всего есть 18 видов растений, каждому сотруднику выдаёться на руки по 1 виду каждого, у каждого сотрудника есть отдельная плантация под каждое растение для наблюдения. Каждый сотрудник наблюдает за своими 18 растениями и ежемесячно 28 числа должен фиксировать их плотность разрастания в см2. Период наблюдения 1 год, а по январям эти же растения переводятся просто на другое удобрение и наблюдение и фиксация данных продолжается. Новое растение может быть выдано в любой месяц до 28 числа, тогда этот первый заведённый показатель 28 числа и должен быть площадью разрастания. Но старший научный сотрудник в базе должен видеть уже актуальную разницу реального разрастания за каждый месяц, должны вычитаться данные разрастания из предыдущего месяца по id плонтации, если я правильно мыслю. Я думал как-то так, тут 6 строка - это впервые выданное растение. Таблица для сотрудников: id сотрудника id плантации счётчик строк timestamp Показания1 17 1 2018-12-28 211 17 3 2019-01-28 251 17 5 2019-02-28 281 16 6 2019-02-28 22 3 2 2018-12-28 252 3 4 2019-01-28 302 3 7 2019-02-28 351 16 8 2019-03-28 8 Если старший сотрудник выбрал отоброзить только 2019 год, то он должен видеть вот такой результат: id сотрудника id плантации счётчик строк timestamp Показания Площадь прироста1 17 3 2019-01-28 25 41 17 5 2019-02-28 28 31 16 6 2019-02-28 2 22 3 4 2019-01-28 30 52 3 7 2019-02-28 35 51 16 8 2019-03-28 8 6 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 16:57 |
|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
Господи, воды-то... тогда как надо было: структуру таблицы (CREATE TABLE), пример данных (INSERT INTO) и результат для этих данных с объяснением, почему именно так (или два-три результата при разных параметрах выборки). А рост растений это, объём данных на харде или остаток продовольствия в кругосветке - вообще пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 19:17 |
|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
Ну и версию MySQL обязательно указать надо. Это важно в ТАКОЙ задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 19:18 |
|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
По аналогии это один в один как с счётчиками воды, чтоб узнать расход за текущий месяц, нужно вычесть текущие показания в конце месяца от предыдущих показаний прошлого месяца, это и будет расход за текущий месяц. Вот это мне и нужно в целом и чтоб эти данные были в отдельном новом столбце. Пример: idplant 17 = тюльпаны. Строка с idplant 17 за 28 Февраля должна быть = данные тюльпанов за Февраль (28) - данные тюльпанов за Январь (25) = 3. И так чтоб считались все месяцы. MySQL 5.6.45 CREATE TABLE `rastenija` ( `row_ID` int(11) NOT NULL AUTO_INCREMENT, `idstaff` int(11) DEFAULT NULL, `idplant` int(11) DEFAULT NULL, `record` decimal(16,4) DEFAULT NULL, `timedata` datetime DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY `row_ID` (`row_ID`) USING BTREE) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 INSERT INTO `rastenija` (`row_ID`, `idstaff`, `idplant`, `record`, `timedata`) VALUES (1, 1, 17, '21.0000', '2018-12-28 20:26:13'),(2, 2, 3, '25.0000', '2018-12-28 20:30:19'),(3, 1, 17, '25.0000', '2019-01-28 20:30:37'),(4, 2, 3, '30.0000', '2019-01-28 20:30:53'),(5, 1, 17, '28.0000', '2019-02-28 20:31:31'),(6, 1, 16, '2.0000', '2019-02-28 20:31:55'),(7, 2, 3, '35.0000', '2019-02-28 20:32:16'),(8, 1, 16, '8.0000', '2019-03-28 20:33:00'); ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 22:39 |
|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
Если данные строго отвечают принципу "не более одной записи в месяц", то задача решается вульгарным Код: sql 1. 2. 3. 4. 5.
fiddle Если же возможны несколько записей за месяц - запрос будет сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 08:05 |
|
Как вычесть строки по id плантации ?
|
|||
---|---|---|---|
#18+
Чтоб одни показания вычетались из других, так будет правильно ? Код: plsql 1. 2. 3.
И как это сохранить в виде таблицы, или возможно через UNION сделать INSERT INTO столбец Result в таблицу rastenija по дате или row_id. Или я коряво мыслю ? Потому как данные из Result нужны будут ещё для массы других расчётов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 21:15 |
|
|
start [/forum/topic.php?fid=47&msg=39877885&tid=1828903]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 128ms |
0 / 0 |