powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос по SQL
4 сообщений из 4, страница 1 из 1
Сложный запрос по SQL
    #32848970
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста, помогите правильно составить запрос (если возможно эту задачу объединить в один запрос).
Есть таблица с такими данными (данные в усеченном виде, чтобы была понятна задача).
автор
GostID | Massa | PlechoX |PlechoY |PlechoZ
01010101 | 1212,1 | 3,1 | 0,06 |2,81
01010102 |
020303 |
020305 |
030101 |
030104 |
04010101 |
0401010201 |
05010106 |
05010107 |
05010201 |
060204 |
070203 |
070205 |
0901 |
09030103 |
09030105 |
11 |
12010101 | ...
12010102 |
1301 |
1303 |
140101 |
16010101 |
160101010 |
1705 |
180101 |
19010304 |
19010305 |
Возле каждой статьи свои значения массы и плеч
GostID – текстовое поле, остальные тип float.
Нужно найти суммы по разделам (01, 02 и т.д. до 19) масс и моментов (Mx = Massa * PlechoX; My. Mz) чтобы все сложилось таким образом в одну сумму:
100% всех сумм и моментов с раздела 01 по 15 включительно плюс 50% от 16 раздела плюс 100% разделов 17 и 18. Если бы не нужно было брать часть от 16 раздела, то запрос выглядел бы так:
авторSELECT SUM(Massa) AS SUMM_P,
SUM(Massa * PlechoX) AS SUMM_MX, SUM(Massa * PlechoY)AS SUMM_MY,
SUM(Massa * PlechoZ) AS SUMM_MZ
FROM dbo.Table1
Where
(GostID >= '01' AND GostID <= '16' OR
GostID >= '17' AND GostID < '19')

Возможно ли реализовать эту задачу. Если можно, подскажите, как?
...
Рейтинг: 0 / 0
Сложный запрос по SQL
    #32849054
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто надо добавить UNION

SELECT SUM(Massa) AS SUMM_P,
SUM(Massa * PlechoX) AS SUMM_MX, SUM(Massa * PlechoY)AS SUMM_MY,
SUM(Massa * PlechoZ) AS SUMM_MZ
FROM dbo.Table1
Where
(GostID >= '01' AND GostID <= '15' OR
GostID >= '17' AND GostID < '19')

UNION

SELECT SUM(Massa) AS SUMM_P,
SUM(Massa * PlechoX) AS SUMM_MX, SUM(Massa * PlechoY)AS SUMM_MY,
SUM(Massa * PlechoZ) AS SUMM_MZ
FROM dbo.Table1
Where
GostID = '16'


PS Не помню, как в mySQL, а в Oracle констукцию

GostID >= '01' AND GostID <= '15'

проще записать так

(GostId BETWEEN 1 AND 15)
...
Рейтинг: 0 / 0
Сложный запрос по SQL
    #32849061
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку

Разумеется, для 16 надо умножить на 0.5
...
Рейтинг: 0 / 0
Сложный запрос по SQL
    #32849115
laifik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гениально! Принцип ясен. Оказалось, ничего сложного.
Все получилось. Спасибо огромное!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос по SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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