Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bandyn
Лучше использовать явные джойны (лучше читать запрос)
 
Возможно так max(ENDS.END_DATE) over(partition by ENDS.DDC_ID)

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 15:30 30-11-2013
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bandyn
Если просто максимальную дату, зачем PARTITION вообще?
MAX(end_date) OVER ()

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 18:19 31-12-2013
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, (особенно те, кто классно знает аксесс))
пытаюсь решить вроде простую задачу по расчету бюджета, но у меня не получается.
есть база данных аксесс. В ней 3 базы.
кампании
платежи
пользователи
 
В целях конфиденциальности все закодировано
Кампании. Тут указан номер рекл. кампании, её название и выделенный на нее бюджет
Платежи тут id пользователя и сколько в мес он платит за то или приложение(пусто значит не платил)
Пользователи тут номер пользователя и рекл кампании, с которой он вышел на приложение. (u133206_ это id пользователя, и номер компании с которой он пришел cpn_2 т.е. тут 2-ая
 
Дополнение. Люди на каком то сайте , напр яндекс , видят рекламу приложения. у них есть месяц триал , он бесплатный, а далее пользователь либо продолжает платить деньги ежемесечно, либо несколько месяцев платит.
 
Как написать sql запрос, чтобы высчитать стоимость одного триал пользователя для каждой из рекламных кампаний?;
Общие затраты делятся на количество оформивших "триал"
 
стоимость одного платного пользователя для каждой из рекламных кампаний?
все затраты делите на купивших что-то
Каково значение ROI для каждой из кампаний?  

в идеале запрос должен формировать таблицу такого вида
 
клетка Е это выплат по кампании (от заплативших)
G- стоимость одного оплатившего  
 


Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 22:37 19-01-2014
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Futurism
1) Имелось ввиду наверное не 3 базы а 3 таблицы или вида?
2) Вообще-то без структуры данных с репрезентативным примером навряд-ли кто поможет, тут дальше коммуникации на уровне общения с духами не уйдёт, только гадальный салон в помощь.
3) ROI какой-то кривой походу, хоть что-то типа привязки к периоду или какое-то подобие дисконтирования не помешало-бы, иначе купили 10 лет назад за 100, сегодня продали за 100 и типа по нулям?

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 23:40 19-01-2014
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vikkiv
да забыл файл выложить с аксесс
http://rghost.ru/51787992
рои тут взял  
http://www.marketch.ru/marketing_dictionary/marketing_terms_r/roi/
 Считаем "триал" никакого отношения к бизнес-задачи возврата инвестиций не имеющим, тогда все доходы относим на расходы.

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 11:10 20-01-2014
qwertEHOK

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. зачем ЭТО делать в аксессе? Экселя вам хватит за глаза
2. напишите вашу формулу с помощью ваших колонок
3. у меня 2003 аксцесс, он вашу БД не открывает
 
 

Всего записей: 454 | Зарегистр. 13-09-2006 | Отправлено: 16:50 23-01-2014
Big17

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
Смотря какая версия Oracle... В 8-ке вообще JOIN-ов нет.

Всего записей: 147 | Зарегистр. 30-09-2003 | Отправлено: 18:28 25-01-2014
qBarmaleyq

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как написать sql запрос, чтобы высчитать стоимость одного триал пользователя для каждой из рекламных кампаний?;  
Общие затраты делятся на количество оформивших "триал"  

select (общие_затраты/колво_оформ_триал) as Cost_1 from имя_таблицы_затраты where id_reklam_compani=(select distinct id_reklam_compani from имя_таблицы_реклам_компании)

Всего записей: 120 | Зарегистр. 13-10-2007 | Отправлено: 17:38 01-02-2014
Big17

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qBarmaleyq
Только для дочернего запроса, наверное не "=", а "IN"

Всего записей: 147 | Зарегистр. 30-09-2003 | Отправлено: 00:43 04-02-2014
voixkas



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Дано: СУБД Oracle 11, таблица "table1":
Код:
create table table1 (
  id_    number(38)   not null,
  date_  date         not null,
  name1  varchar2(30) not null,
  name2  varchar2(30) not null,
  clob_  clob
);
create unique index ui#table1#set1 on table1 (date_, upper(name1), upper(name2));
alter table table1 add constraint pk#table1#id_ primary key (id_);

 
Заполняем таблицу:
Код:
delete from table1;
insert into table1 (date_, name1, name2)
       with names as (select a.name1, a.name2
                             from (select 'name' || trunc(dbms_random.value(1, 100)) as name1,
                                          'name' || trunc(dbms_random.value(1, 100)) as name2
                                          from dual
                                               connect by level <= 100) a)
       select distinct s.date_, c.name1, c.name2
              from (select trunc(dbms_random.value(1, 100)) as nr,
                           to_date('1900.01.01', 'yyyy.mm.dd') + trunc(dbms_random.value(1, 42000)) as date_
                           from dual
                                connect by level <= 100000) s
              inner join (select rownum rn, name1, name2 from names) c
                                 on c.rn = s.nr;
commit;

Необходимо выбрать актуальные значения clob'ов на дату "by_date" для уникальных name1+name2.
Вариант №1:
Код:
select a.date_, a.name1, a.name2, a.clob_
       from table1 a
            where a.date_ = (select max(b.date_)
                                    from table1 b
                                         where b.name1 = a.name1
                                               and b.name2 = a.name2
                                               and b.date_  <= to_date('2014.03.20', 'yyyy.mm.dd'))

Вариант №2:
Код:
elect z.date_,z.name1,z.name2,z.clob_ from(
select t.date_,t.name1,t.name2,t.clob_,ROW_NUMBER() over (partition by t.name1,t.name2 order by t.date_ desc) rn
from TABLE1 t
where t.date_  <= to_date('2014.03.20', 'yyyy.mm.dd')
) z where z.rn=1

 
Есть ли более быстрые варианты выборки?

Всего записей: 30 | Зарегистр. 25-02-2007 | Отправлено: 21:45 22-03-2014
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а если 2 записи у которых data name1 name2 одинаковы?

Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 01:44 23-03-2014
Big17

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Есть ли более быстрые варианты выборки?

 
Индексы расставить на все date поля. Или они уже есть?
Первый вариант нормальный.

Всего записей: 147 | Зарегистр. 30-09-2003 | Отправлено: 00:07 30-03-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время всем.
Появилась потребность в решении задачи, но знаний и опыта катастрофически не хватает.
Система - SQLite.  
Существует три таблицы, например дамп
Текущая обработка
Нужно получить представление вида  
Name|Nick|Phone1|Phone2|Phone3|Email1
Ivan|Vanja|1_Phone1|1_Phone2|1_Phone3|1_Email1
Petr|Petja|2_Phone1|||2_Email1
Sidor||3_Phone1||||
Лучше всего - если количество столбцов Phone# равнялось бы максимальному количеству записей с data_type=1 для одного name_id
Возможно ли такое сделать? Если да, то как? Если нет, возможно ли вывести строку, состоящую из определенного количества символов, например,  "10 - COUNT(*)" То есть если COUNT (*)=1, то вывести строку из 9 символов "|"? (Будет экспорт в csv и предполагаю склеить поля в одну строку через разделитель и дописать разделители до нужного количества столбцов).
Заранее благодарю.
PS. Прошу прощения за сумбурность изложения и неправильную терминологию.
UPDATE. Вроде понял, но правильно ли? Подробнее...

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 14:10 31-03-2014 | Исправлено: Alex_Piggy, 19:16 31-03-2014
Big17

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Используйте динамический SQL

Всего записей: 147 | Зарегистр. 30-09-2003 | Отправлено: 16:45 01-04-2014
Prot_XT

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy

Цитата:
Доброе время всем.
Появилась потребность в решении задачи, но знаний и опыта катастрофически не хватает.
Система - SQLite.  
Существует три таблицы, например дамп
Текущая обработка
Нужно получить представление вида  
Name|Nick|Phone1|Phone2|Phone3|Email1
Ivan|Vanja|1_Phone1|1_Phone2|1_Phone3|1_Email1
Petr|Petja|2_Phone1|||2_Email1
Sidor||3_Phone1||||
Лучше всего - если количество столбцов Phone# равнялось бы максимальному количеству записей с data_type=1 для одного name_id
Возможно ли такое сделать? Если да, то как? Если нет, возможно ли вывести строку, состоящую из определенного количества символов, например,  "10 - COUNT(*)" То есть если COUNT (*)=1, то вывести строку из 9 символов "|"? (Будет экспорт в csv и предполагаю склеить поля в одну строку через разделитель и дописать разделители до нужного количества столбцов).
Заранее благодарю.
PS. Прошу прощения за сумбурность изложения и неправильную терминологию.
UPDATE. Вроде понял, но правильно ли? Подробнее...

 
Задача еще актуальна... или как?

Всего записей: 163 | Зарегистр. 04-04-2003 | Отправлено: 13:49 03-05-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, Prot_XT
Сама задача уже не актуальна, но узнать решение будет интересно.

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 15:11 03-05-2014
Prot_XT

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
На сколько я понял, ты хочешь вывести в строчку плавающие значения в некоей другой таблице?
 
Добавлено:
Или неправильно уловил суть?

Всего записей: 163 | Зарегистр. 04-04-2003 | Отправлено: 15:41 05-05-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите, пожалуйста, в скуль написать запрос . есть файл
http://rghost.ru/58284065
надо чтобы на выходе он имел такой вид

выручите, пожалуйста.

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 19:17 30-09-2014
vpilot



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А в чем в собственно вопрос? У тебя данные уже есть практически в том виде, в каком тебе нужно. Осталось только в нужном порядке выбрать поля, сделать сортировку...  
Что-то вроде:
SELECT ID, FIO, Document, Type_Phone, Phone
FROM [имя_базы].[dbo].[имя_таблицы]
ORDER BY ID
 
У тебя в таблице нет поля №, если это всего лишь порядок строки выборки, тогда можно использовать ROW_NUMBER() и запрос будет выглядеть так:
SELECT ROW_NUMBER() OVER(ORDER BY ID) as Num, ID, FIO, Document, Type_Phone, Phone
FROM [имя_базы].[dbo].[имя_таблицы]
ORDER BY ID

Всего записей: 50 | Зарегистр. 11-11-2004 | Отправлено: 11:43 02-10-2014 | Исправлено: vpilot, 11:49 02-10-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vpilot
ок попробую. а ты можешь подсказать. каким запросом  формат даты  
02.10.2014 изменить на 02-10-2014. Там просто таких дат много, но нужно именно в таком жанре  02-10-2014

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 19:17 02-10-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru