Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» SQL запрос

Автор: Fsp050
Дата сообщения: 11.12.2014 14:40
Ещё такой вопросик.
как сделать, чтобы переменные были упорядочены по убыванию

например
select
x1
x2
x3
from dbo.yyy
where х1 имеет максимально значение
Автор: landy
Дата сообщения: 11.12.2014 20:19

Цитата:
переменные были упорядочены по убыванию

order by x1 desc, x2 desc, x3 desc
Автор: Fsp050
Дата сообщения: 12.12.2014 11:10
ага понял
Автор: Fsp050
Дата сообщения: 18.12.2014 12:28
такой вопрос. Как составить запрос такого типа
select
x1
x2
x3
x4
x5
from dbo
нужно сложить максимальные значения х1,х2
потом сложить максимальные значения х3,х4
как это прописать
Автор: DrakonHaSh
Дата сообщения: 18.12.2014 14:59
Fsp050
select max(x1) + max (x2), max(x3) + max (x4) from dbo
Автор: Fsp050
Дата сообщения: 18.12.2014 15:09
ясно, получилось))
Автор: Fsp050
Дата сообщения: 19.12.2014 16:33
а вот темка реально куда сложнее. можно ли как-то автоматизировать скуль запрос
вот он
SELECT
х1
х2
х3
х4
..
from dbo a
where [accepted_date]>'ххх'
and условие такое то
and х1 in (8,9) -- вот тут самая загвоздка, здесь надо будет перебирать разные комбинации сочетания параметров, их 10

1.(8,9)
2.(7,10)
3.(6-10)
4.(4,5,12,13)
5.(2,3,14,15)
6.(24,25)
7.(26,23)
8.(22,27)
9.(20,21,28,29)
10.(18,19,30,31)

для каждого из этих условий надо составить идентичный запрос , такой как выше, только вместо (8,9) будет стоять (7,10) и так до (18,19,30,31)

можно ли сделать, что бы таким образом сделалось 10 таблиц и каждая сохранилось в отдельный csv файл с название
типа а 8,9.csv
a 7,10.csv
...

а то каждый раз приходится механически писать по новой и вручную сохранять.
Автор: DrakonHaSh
Дата сообщения: 19.12.2014 17:18
ваш вопрос за рамками простого sql запроса
не понятно для какого sql движка нужно составить запрос.
универсального для "стандартного sql" решения думаю нет т.к., в частности, операции с файлами не входят в стандарт sql. на разных движках это делается по разному. курите операции с файлами. в mysql есть into outfile
Автор: Fsp050
Дата сообщения: 22.12.2014 18:10
DrakonHaSh
у меня такой движок
Автор: landy
Дата сообщения: 22.12.2014 18:53
Fsp050, можно прибегнуть к динамическому SQL и формировать текст запроса другим запросом, сохранив наборы параметров в табличку.
Автор: Fsp050
Дата сообщения: 23.12.2014 11:59
landy
а как, можете подсказать?
Автор: landy
Дата сообщения: 23.12.2014 20:18
Приблизительно так:

1. Создаем таблицу TB_PARAM с параметрами (для начала можно хранить их прямо строкой с перечислением.

2. Дальше формируем текст запроса:
SELECT 'select x1,x2,x3,x4 from dbo a where [accepted_date]>''ххх''
and условие такое то
and х1 in (' + TB_PARAM.VALUE + ')'
WHERE ID = 1;

либо можно использовать процедурный подход:

DECLARE @sqlCommand varchar(1000)
SET @sqlCommand = 'SELECT x1,x2,x3,x4 from dbo a where [accepted_date]>''ххх'' and условие такое то and х1 in (' + @VALUE + ')';

3. Выполняем полученный оператор через EXEC (@sqlCommand)

Более другие примеры.
Автор: Futurism
Дата сообщения: 30.12.2014 16:58
Подскажите, как правильно написать запрос
case when x1=0 или меньше нуля и х2=243 назвать группа 1
case when x1=1 до 241 и х2=242 назвать группа 2
case when x1=0 или 242 и х2=241 назвать группа 3
case when x1=1 до 241 и х2=243 назвать группа 4

Автор: vikkiv
Дата сообщения: 30.12.2014 21:14
Futurism
Код: declare @x1 smallint=0,@x2 tinyint=241
select case when @x1<=0 and @x2=243 then'g1'
when @x1 between 1 and 241 and @x2=242 then'g2'
when(@x1=0 or @x1=242)and @x2=241 then'g3'
when @x1 between 1 and 241 and @x2=243 then'g4'
else'g0'end result
Автор: Futurism
Дата сообщения: 31.12.2014 14:11
vikkiv
Автор: rrromano
Дата сообщения: 01.01.2015 15:57
В Оракле можно через decode )
Автор: Fsp050
Дата сообщения: 12.01.2015 18:12
А как подсчитать проценты?
например
селект
х1
х2
х3
фром дбо
подсчитать сколько процентов в переменной х1 встречается число 20мм
Автор: exteris
Дата сообщения: 13.01.2015 08:08
В FB можно так:

Код: select cast(sum(case x1 when 20 then 1 else 0 end) as float)/count(x1)
from t
Автор: Fsp050
Дата сообщения: 13.01.2015 21:32
Благодарю Вас. А такой вопрос.
вот составленный запрос с пивотами
Автор: Futurism
Дата сообщения: 20.01.2015 17:14
подскажите, как быть
у меня есть столбец 1,2,3....
групп цена категория тотал
х 20 6 20
у 30 5 30
...
как мне добавить 5 столбец тотал-точно, где будут категории, 1,2,3,4,5,6 , но не -1
case when а вот как дальше не могу понять
Автор: landy
Дата сообщения: 20.01.2015 18:33
Futurism, вот примеры использования CASE
Автор: Fanat Andrew
Дата сообщения: 22.01.2015 11:04
БД FireBird 2.6.0.67
Версия gds32.dll:
2.5.1.26351


Есть таблицы:
CLIENTS поля ID, BONUS_BALANCE
ORDERS поля ID, CLIENTID, TARIF_ID
CLIENT_BONUS_OPER поля ID, CLIENTID, ORDERID, SUMM

Надо CLIENTS.BONUS_BALANCE уменьшить последовательно на величину CLIENT_BONUS_OPER.SUMM у тех CLIENTS.ID у которых ORDERS.TARIF_ID равен определенному значению.
CLIENTS.ID, ORDERS.CLIENTID, CLIENT_BONUS_OPER.CLIENTID равны
ORDERS.ID, CLIENT_BONUS_OPER.ORDERID равны

После уменьшения необходимо удалить строки из CLIENT_BONUS_OPER которые принимались к вычету

Вот так я вывел список операций на основании тарифа


Код:
select client_bonus_oper.orderid, client_bonus_oper.clientid, client_bonus_oper.summ from client_bonus_oper where orderid in
(select ORDERS.id
from ORDERS
where ORDERS.TARIF_ID like '39')
Автор: exteris
Дата сообщения: 23.01.2015 07:30
Как-то так:

Код: select client_bonus_oper.orderid, client_bonus_oper.clientid, client_bonus_oper.summ-clients.bonus_balance
from client_bonus_oper
join orders on client_bonus_oper.orderid=orders.id and orders.tarif_id=39
left join clients on clients.id=client_bonus_oper.clientid
Автор: Fsp050
Дата сообщения: 27.01.2015 17:55
помогите пожалуйста, вот есть такая таблица
http://rghost.ru/8cgTDH2wK
ну в sql своя ессно.
как работать с двоящимися значением
т.е. если в одинаковом лоад_ид, есть pair которые повторяются, тут 20 и 20 и одна пара имеет ориент hor , а другая vertical и hor имеет минимальное расстояние тут он 1, то Х, иначе У end as//
Автор: OXDBA
Дата сообщения: 28.01.2015 13:31
Fsp050

Цитата:
как работать с двоящимися значением

Добавить в таблицу суррогатный ключ.
Автор: Fanat Andrew
Дата сообщения: 28.01.2015 13:51
exteris, а что этот запрос делает? что-то не могу понять.
Автор: landy
Дата сообщения: 28.01.2015 17:08

Цитата:
как работать с двоящимися значением

например, в oracle для этого есть аналитические функции
Автор: Unnicked
Дата сообщения: 24.02.2015 12:59
Пожалуйста, помогите со следующим запросом.

Есть табличка со столбцами DT (DATE), ID (NUMBER) - первичный ключ, VAL (NUMBER).

Нужно получить DT, ID, VAL по всем ID, при этом DT у каждого ID должно быть максимальным. Если у каких-то ID DT и VAL не заданы (null), они тоже должны вернуться этим запросом со значениями null.
Автор: Mic777
Дата сообщения: 24.02.2015 14:01

Цитата:
Пожалуйста, помогите со следующим запросом.

Типа такого: [more]

Код:
with
a as (
select 1 "id", 1 dt, 1 val from dual
union
select 2 "id", 2 dt, 2 val from dual
union
select 1 "id", 2 dt, 3 val from dual
union
select 3 "id", null dt, 4 val from dual
union
select 4 "id", 4 dt, null val from dual
),

b as (
select a."id", max(a.dt) dt
from a
group by a."id"
)

select a.*
from a
join b on a."id" = b."id"
and (a.dt = b.dt or b.dt is null)
Автор: Unnicked
Дата сообщения: 01.03.2015 00:24
Спасибо!
Есть еще одна просьба.

Есть табличка ARCH_DATA со столбцами DT (DATE), ID (NUMBER) - первичный ключ, VAL (NUMBER) и табличка ARCH_KEY со столбцом ID (NUMBER).


Нужно для всех ID из ARCH_KEY получить VAL с максимальным DT из ARCH_DATA. При этом если в ARCH_DATA нет данных по какому-то ID, нужно вернуть строку с этим ID и null null.

Пример:
ARCH_DATA
ID DT VAL
1 1 22
1 2 33
2 3 44

ARCH_KEY
ID
1
2
3
4

Требуемый результат:
ID DT VAL
1 2 33
2 3 44
3 null null
4 null null

Страницы: 1234567891011121314

Предыдущая тема: Строковый параметр в REG_BINARY


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.