|
|
|
Сложный запрос по SQL
|
|||
|---|---|---|---|
|
#18+
Пожалуйста, помогите правильно составить запрос (если возможно эту задачу объединить в один запрос). Есть таблица с такими данными (данные в усеченном виде, чтобы была понятна задача). автор 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') Возможно ли реализовать эту задачу. Если можно, подскажите, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 10:08 |
|
||
|
Сложный запрос по SQL
|
|||
|---|---|---|---|
|
#18+
Просто надо добавить 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 10:40 |
|
||
|
Сложный запрос по SQL
|
|||
|---|---|---|---|
|
#18+
Вдогонку Разумеется, для 16 надо умножить на 0.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 10:42 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=669&tid=1854472]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 332ms |

| 0 / 0 |
