Мне нужна помощь в разработке запроса. У меня есть одна таблица с большим количеством строк (она должна быть в одной таблице).Sql объединяется только из одной таблицы
Table name: 201201
columns = code, batch, value, volume
rows = 301, 2920, 100, 2000
301, 3192, 40, 800
302, 6479, 230, 3100
303, 4930, 20, 50
303, 3920, 60, 95
Как я мог вытащить результаты так оно представлено таким образом:
code, batches, value, volume
301, 2, 140, 2800
302, 1, 230, 3100
303, 2, 80, 145
Я сделал это, когда я использую multiplie таблицы, но не может заставить его работать, когда все строки находятся в такой же таблица.
мне удалось получить счетчик партии и mrdr с этим запросом
SELECT DISTINCT(`201201`.code), count(DISTINCT(z.batch)) as batches
FROM `201201`
LEFT JOIN `201201` AS z ON `201201`.code = z.code
GROUP BY `201201`.code
Но я застрял. Спасибо заранее.
новый выпуск! Итак, в той же таблице у меня есть столбец риска, который содержит число с плавающей запятой для каждой партии:
Table name: 201201
columns = code, batch, value, volume, risk
rows = 301, 2920, 100, 2000, 0.3
301, 3192, 40, 800, 0.2
302, 6479, 230, 3100, 0.8
303, 4930, 20, 50, 0.8
303, 3920, 60, 95, 1
Что я хотел бы это умножить риск со значением для каждой строки, а затем подвести его по коду , как это.
code, batches, value, volume, risk
301, 2, 140, 2800, 38
Откуда 38, 0.3 * 100 + 0.2 * 40. То же самое для кода 302 и 303.
Вы должны переименовать таблицу, а также. '201201' является полностью двусмысленным. Скорее дайте таблице подходящее имя и добавьте поле даты в таблицу, чем указав в таблице число «YYYYMM» – Richard
Hm, может ли это/вызвать какие-либо проблемы? Дело в том, что таблицы создаются путем импорта файлов excel в месяц, и эти файлы не содержат поля даты. Таким образом, один файл = одна таблица. – Josef
Нет никаких проблем. Вы можете добавить дату вручную в свой SQL или сделать поле «timestamp», и вам не нужно ничего делать, он автоматически добавит метку времени при добавлении строки. – Richard