powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Посчитать сумму записей с одинаковыми полями без удаления
15 сообщений из 15, страница 1 из 1
Посчитать сумму записей с одинаковыми полями без удаления
    #39796828
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой того что нужно посчитать сумму у записей с одинаковым кодом и толщиной.
Тут на картинке вывод данных из таблицы -> https://ibb.co/j3RhR8x
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `code`.`code`, sklad.thickness, sklad.width, sklad.height, prihod.`name`, (sklad.width * sklad.height)/1000000 AS 'SUM'
FROM sklad
INNER JOIN `code` ON sklad.`code` = `code`.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
ORDER BY sklad.thickness, `code`.Id



Тут я реализовал так как знаю -> https://ibb.co/kDyVJRr
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `code`.`code`, sklad.thickness, sklad.width, sklad.height, prihod.`name`, SUM((sklad.width * sklad.height)/1000000) AS 'SUM'
FROM sklad
INNER JOIN `code` ON sklad.`code` = `code`.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
GROUP BY sklad.thickness, `code`.Id



Но мне очень нужно для составления отчета что бы выводило вот так -> https://ibb.co/jRMtzWX

Подскажите пожалуйста как составить такой запрос ?
Заранее за вашу помощь!
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39796836
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Builder988Столкнулся с проблемой того что нужно посчитать сумму у записей с одинаковым кодом и толщиной.
Тут на картинке вывод данных из таблицы -> https://ibb.co/j3RhR8x
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `code`.`code`, sklad.thickness, sklad.width, sklad.height, prihod.`name`, (sklad.width * sklad.height)/1000000 AS 'SUM'
FROM sklad
INNER JOIN `code` ON sklad.`code` = `code`.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
ORDER BY sklad.thickness, `code`.Id



Тут я реализовал так как знаю -> https://ibb.co/kDyVJRr
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `code`.`code`, sklad.thickness, sklad.width, sklad.height, prihod.`name`, SUM((sklad.width * sklad.height)/1000000) AS 'SUM'
FROM sklad
INNER JOIN `code` ON sklad.`code` = `code`.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
GROUP BY sklad.thickness, `code`.Id



Но мне очень нужно для составления отчета что бы выводило вот так -> https://ibb.co/jRMtzWX

Подскажите пожалуйста как составить такой запрос ?
Заранее благодарю за вашу помощь!
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39796849
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Builder988Но мне очень нужно для составления отчета что бы выводило вот так -> https://ibb.co/jRMtzWX Ссылки не открываются. Напишите тут, как Вам нужно.
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39796917
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложите:

1) DDL таблиц (выполнить SHOW CREATE TABLE tablename и вырезать от CREATE TABLE до последней закрывающей скобки)
2) Образец данных для каждой таблицы (набор INSERT INTO с данными)
3) Желаемый результат на именно таких данных, с объяснением, почему именно так

Первые два пункта - в теге SRC, третий в теге Table (разделитель полей - запятая). Перед публикацией проверить вид текста (кнопка Просмотр).
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797033
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for code
-- ----------------------------
DROP TABLE IF EXISTS `code`;
CREATE TABLE `code` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL,
  `code` varchar(25) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of code
-- ----------------------------
INSERT INTO `code` VALUES ('1', '2', '1478');
INSERT INTO `code` VALUES ('2', '2', '1426');
INSERT INTO `code` VALUES ('3', '3', '5712');
INSERT INTO `code` VALUES ('4', '2', '5712');
INSERT INTO `code` VALUES ('5', '2', '126');
INSERT INTO `code` VALUES ('6', '2', '305');
INSERT INTO `code` VALUES ('7', '5', '2344');
INSERT INTO `code` VALUES ('8', '6', '5516');

-- ----------------------------
-- Table structure for nakladnay
-- ----------------------------
DROP TABLE IF EXISTS `nakladnay`;
CREATE TABLE `nakladnay` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `number` int(11) unsigned NOT NULL,
  `Date_S` date NOT NULL,
  `Date_P` date DEFAULT NULL,
  `rosh` tinyint(1) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of nakladnay
-- ----------------------------
INSERT INTO `nakladnay` VALUES ('1', '5004', '2019-03-01', null, '0');
INSERT INTO `nakladnay` VALUES ('2', '5901', '2019-02-01', null, '1');
INSERT INTO `nakladnay` VALUES ('3', '1452', '2019-03-02', null, '0');
INSERT INTO `nakladnay` VALUES ('4', '1537', '2019-02-13', null, '1');
INSERT INTO `nakladnay` VALUES ('5', '1000', '2019-03-17', '2019-04-01', '1');
INSERT INTO `nakladnay` VALUES ('6', '2000', '2019-03-16', null, '0');
INSERT INTO `nakladnay` VALUES ('7', '5902', '2019-03-17', null, '0');

-- ----------------------------
-- Table structure for prihod
-- ----------------------------
DROP TABLE IF EXISTS `prihod`;
CREATE TABLE `prihod` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(35) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of prihod
-- ----------------------------
INSERT INTO `prihod` VALUES ('1', '21.1/19');
INSERT INTO `prihod` VALUES ('2', '1.12/18');
INSERT INTO `prihod` VALUES ('3', 'закупка');
INSERT INTO `prihod` VALUES ('4', '1.1/19');

-- ----------------------------
-- Table structure for sklad
-- ----------------------------
DROP TABLE IF EXISTS `sklad`;
CREATE TABLE `sklad` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(11) DEFAULT NULL,
  `line_selection` tinyint(1) DEFAULT '0',
  `date` date DEFAULT NULL,
  `date_two` date DEFAULT NULL,
  `prihnakl` int(11) DEFAULT NULL,
  `prihod` int(11) DEFAULT NULL,
  `color` int(11) DEFAULT NULL,
  `code` int(11) DEFAULT NULL,
  `thickness` int(11) DEFAULT NULL,
  `width` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  `comment` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `FK_SKLAD_REFERENCE_CODE` (`code`),
  KEY `FK_SKLAD_REFERENCE_PRIHOD` (`prihod`),
  KEY `FK_SKLAD_REFERENCE_NAKLADNA` (`prihnakl`),
  CONSTRAINT `FK_SKLAD_REFERENCE_CODE` FOREIGN KEY (`code`) REFERENCES `code` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_SKLAD_REFERENCE_NAKLADNA` FOREIGN KEY (`prihnakl`) REFERENCES `nakladnay` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_SKLAD_REFERENCE_PRIHOD` FOREIGN KEY (`prihod`) REFERENCES `prihod` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sklad
-- ----------------------------
INSERT INTO `sklad` VALUES ('30', '2', '0', '2019-02-15', '2019-03-12', '1', '1', null, '2', '20', '2000', '1200', 'Отрезок\r\nКривоват');
INSERT INTO `sklad` VALUES ('31', '2', '0', '2019-03-04', '2019-03-17', '1', '2', null, '1', '32', '1500', '2500', 'комментарий');
INSERT INTO `sklad` VALUES ('32', '2', '0', '2019-02-07', '2019-03-13', '2', '2', null, '2', '20', '1000', '1500', 'комментарий');
INSERT INTO `sklad` VALUES ('33', '1', '0', '2019-02-15', null, '2', '1', '3', null, '10', '1500', '500', 'Отсутствует');
INSERT INTO `sklad` VALUES ('34', '2', '0', '2019-03-17', '2019-03-17', '5', '3', null, '5', '16', '2800', '2070', 'с кромковкой');
INSERT INTO `sklad` VALUES ('35', '2', '0', '2019-03-16', '2019-03-20', '6', '4', null, '6', '10', '200', '200', 'с кромковкой');
INSERT INTO `sklad` VALUES ('36', '2', '0', '2019-03-16', '2019-03-26', '6', '4', null, '6', '10', '200', '200', 'Отсутствует');
INSERT INTO `sklad` VALUES ('37', '2', '0', '2019-03-17', '2019-03-17', '6', '4', null, '6', '10', '200', '200', 'Отсутствует');
INSERT INTO `sklad` VALUES ('38', '2', '0', '2019-03-16', '2019-03-17', '6', '3', null, '6', '12', '200', '300', 'Отсутствует');
INSERT INTO `sklad` VALUES ('39', '2', '0', '2019-01-15', '2019-03-17', '6', '3', null, '5', '12', '400', '4000', 'Отсутствует');
INSERT INTO `sklad` VALUES ('40', '1', '0', '2019-02-15', '2019-03-12', '5', '2', '4', null, '10', '450', '1000', 'Отсутствует');
INSERT INTO `sklad` VALUES ('41', '3', '0', '2019-03-18', '2019-03-24', '6', '3', '1', null, null, null, null, 'Отсутствует');
INSERT INTO `sklad` VALUES ('42', '4', '0', '2019-02-15', null, '6', '2', '1', null, '10', '450', '1000', 'Отсутствует');
INSERT INTO `sklad` VALUES ('43', '1', '0', '2019-03-20', null, '3', '2', '2', null, '12', '200', '500', 'Отсутствует');
INSERT INTO `sklad` VALUES ('44', '1', '0', '2019-03-20', null, '3', '3', '3', null, '14', '500', '700', 'Отсутствует');
INSERT INTO `sklad` VALUES ('45', '2', '0', '2019-03-23', '2019-03-26', '1', '2', null, '1', '32', '420', '800', 'Отсутствует');
INSERT INTO `sklad` VALUES ('46', '5', '0', '2019-03-24', null, '1', '3', '1', '7', '25', '400', '800', 'Отсутствует');
INSERT INTO `sklad` VALUES ('47', '6', '0', '2019-03-29', null, '3', '3', '3', '8', null, null, null, 'Отсутствует');
INSERT INTO `sklad` VALUES ('48', '7', '0', '2019-03-31', '2019-03-31', '5', '2', '4', null, null, '25', null, 'Отсутствует');
INSERT INTO `sklad` VALUES ('49', '7', '0', '2019-03-31', null, '3', '2', '2', null, null, '25', null, 'Отсутствует');
INSERT INTO `sklad` VALUES ('50', '5', '0', '2019-03-31', null, '5', '3', '2', '7', '25', '1460', '800', 'Отсутствует');
INSERT INTO `sklad` VALUES ('51', '2', '1', '2019-04-01', null, '1', '2', null, '2', '16', '1500', '900', 'Отсутствует');
INSERT INTO `sklad` VALUES ('52', '3', '0', '2019-04-04', null, '1', '3', '3', null, null, null, null, 'с кромковкой');
INSERT INTO `sklad` VALUES ('53', '3', '0', '2019-04-04', null, '1', '2', '4', null, null, null, null, 'Отсутствует');
SET FOREIGN_KEY_CHECKS=1;





Нужно что бы выводило вот так:
Code thickness width height name SUM1426 16 1500 900 1.12/18 1.351426 20 2000 1200 21.1/19 2.41478 32 1500 2500 1.12/18 4.0861478 32 420 800 1.12/18 4.086

Спасибо что откликнулись на проблему)
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797055
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получено значение 4,086?
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797060
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Сумма 3 и 4 записи
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797064
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему первые две записи не суммированы, а вторые две - суммированы? по какому признаку разделение/группировка?
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797066
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И версию MySQL сразу уточните.
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797071
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для MySQL 8+ это будет, наверное, так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT code.code, 
       sklad.thickness, 
       sklad.width, 
       sklad.height, 
       prihod.name, 
       sklad.width * sklad.height / 1000000 AS SUM1,
       SUM(sklad.width * sklad.height) OVER (PARTITION BY code, thickness) / 1000000 AS SUM2
FROM sklad
INNER JOIN code ON sklad.code = code.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
ORDER BY sklad.thickness, code.Id;



См. fiddle .
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797084
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Группируется по коду и толщине.

Версия - 5.6.43-log
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797086
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT code.code, 
       sklad.thickness, 
       sklad.width, 
       sklad.height, 
       prihod.name, 
       sklad.width * sklad.height / 1000000 AS SUM1,
       SUM(sklad.width * sklad.height) OVER (PARTITION BY code, thickness) / 1000000 AS SUM2
FROM sklad
INNER JOIN `code` ON sklad.code = code.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
WHERE sklad.type = 2 AND sklad.prihnakl = 1
ORDER BY sklad.thickness, code.Id;


[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY code, thickness) / 1000000 AS SUM2
FROM sklad
INNER JOIN `code` ' at line 7
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797105
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 5.6 ничего лучше, чем

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT code.code, 
       sklad.thickness, 
       sklad.width, 
       sklad.height, 
       prihod.name, 
       sklad.width * sklad.height / 1000000 AS SUM1,
       sums.SUM2
FROM sklad
INNER JOIN code ON sklad.code = code.Id
INNER JOIN prihod ON sklad.prihod = prihod.Id
INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
INNER JOIN (SELECT code.code, 
                   sklad.thickness,
                   SUM(sklad.width * sklad.height) / 1000000 AS SUM2
            FROM sklad
            INNER JOIN code ON sklad.code = code.Id
        --    INNER JOIN prihod ON sklad.prihod = prihod.Id
        --    INNER JOIN nakladnay ON sklad.prihnakl = nakladnay.Id
            WHERE sklad.type = 2 AND sklad.prihnakl = 1
            GROUP BY code.code, 
                     sklad.thickness) sums ON (sums.code, sums.thickness) = (code.code, sklad.thickness)
WHERE sklad.type = 2 AND sklad.prihnakl = 1
ORDER BY sklad.thickness, code.Id;


не получается...

Две строки закомментированы, но не могу выловить по логике, можно это делать или нет.

fiddle
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797106
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Builder988[Err] 1064 - You have an error in your SQL syntax;Ну русским же по белому написано - для ВОСЬМОЙ версии!!!
...
Рейтинг: 0 / 0
Посчитать сумму записей с одинаковыми полями без удаления
    #39797119
Builder988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Большое спасибо за помощь!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Посчитать сумму записей с одинаковыми полями без удаления
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]