powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу сообразить, как присоединить еще один столбец
16 сообщений из 16, страница 1 из 1
Не могу сообразить, как присоединить еще один столбец
    #39665254
gmikhailov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, добрый день.
Есть выборка по заказам за месяц

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT P_CODE, P_UID, TO_DATE(TO_CHAR(P_TIMESLOTDELIVERYSTARTDATE,'DD.MM.YY')), P_TOTALPRICE, P_TIMESLOTCOSTZONE, P_STREETNAME
FROM HYBRIS.ORDERS
JOIN HYBRIS.USERS ON HYBRIS.ORDERS.P_USER = HYBRIS.USERS.PK
JOIN HYBRIS.ADDRESSES ON HYBRIS.ADDRESSES.PK = HYBRIS.ORDERS.P_DELIVERYADDRESS
WHERE HYBRIS.ORDERS.CREATEDTS BETWEEN '01.06.18 00:00:00,0' AND '25.06.18 23:59:59,0'
ORDER BY P_UID;



P_CODE - номер заказа
P_UID - клиент

Появилась необходимость присоединить еще и дату первого заказа по каждому клиенту.
Пока на коленке сделал еще одну выборку:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT P_UID, MIN(ORDERS.CREATEDTS)
FROM HYBRIS.ORDERS
JOIN HYBRIS.USERS ON HYBRIS.ORDERS.P_USER = HYBRIS.USERS.PK
WHERE P_UID IN (SELECT P_UID
FROM HYBRIS.ORDERS
JOIN HYBRIS.USERS ON HYBRIS.ORDERS.P_USER = HYBRIS.USERS.PK
WHERE HYBRIS.ORDERS.CREATEDTS BETWEEN '01.06.18 00:00:00,0' AND '25.06.18 23:59:59,0')
GROUP BY P_UID
ORDER BY P_UID;



Но, к сожалению агрегатная функция подразумевает группировку, а клиент мог сделать не один заказ.
Приходится вручную потом данные собирать.
Помогите пожалуйста сделать все в рамках одной выборки, к сожалению, у меня пока опыта маловато для написания таких выборок.
Заранее спасибо!
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665276
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665353
gmikhailov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал мануал. Попробовал. Все равно не получается.
Если в первую выборку добавлять аналитическую функцию, то естественно минимальный заказ считается по указанному в WHERE периоду.
Если поработать со второй выборкой, то получается слишком большое количество строк из-за оператора IN.
Прошу помочь.
Спасибо.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665363
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gmikhailovПопробовал.Ошибка в 15-ой строке.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665380
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gmikhailov,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
  1  select deptno,ename,hiredate
  2    ,min(hiredate) over (partition by deptno) old --присоединить еще и дату по каждому отделу
  3  from emp
  4* order by 1
SQL> /

    DEPTNO ENAME      HIREDATE OLD
---------- ---------- -------- --------
        10 CLARK      09.06.81 09.06.81
        10 KING       17.11.81 09.06.81
        10 MILLER     23.01.82 09.06.81
        20 JONES      02.04.81 17.12.80
        20 FORD       03.12.81 17.12.80
        20 ADAMS      12.01.83 17.12.80
        20 SMITH      17.12.80 17.12.80
        20 SCOTT      09.12.82 17.12.80
        30 WARD       22.02.81 20.02.81
        30 TURNER     08.09.81 20.02.81
        30 ALLEN      20.02.81 20.02.81
        30 JAMES      03.12.81 20.02.81
        30 BLAKE      01.05.81 20.02.81
        30 MARTIN     28.09.81 20.02.81

14 rows selected.



.....
stax
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665382
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT P_CODE, P_UID, TO_DATE(TO_CHAR(P_TIMESLOTDELIVERYSTARTDATE,'DD.MM.YY')), P_TOTALPRICE, P_TIMESLOTCOSTZONE, P_STREETNAME,
       (SELECT MIN(ORDERS.CREATEDTS) FROM HYBRIS.ORDERS o1 WHERE o1.P_UID = o.P_UID) as first_order
FROM HYBRIS.ORDERS o
JOIN HYBRIS.USERS ON HYBRIS.ORDERS.P_USER = HYBRIS.USERS.PK
JOIN HYBRIS.ADDRESSES ON HYBRIS.ADDRESSES.PK = HYBRIS.ORDERS.P_DELIVERYADDRESS
WHERE HYBRIS.ORDERS.CREATEDTS BETWEEN '01.06.18 00:00:00,0' AND '25.06.18 23:59:59,0'
ORDER BY P_UID;

Не уверен, что поле P_UID из таблицы ORDERS.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665427
gmikhailov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Egoр,

Спасибо большое,
чуть подкорректировал - теперь все ОК.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665432
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egoр
Код: plsql
1.
       (SELECT MIN(ORDERS.CREATEDTS) FROM HYBRIS.ORDERS o1 WHERE o1.P_UID = o.P_UID) as first_order

Тоже не владеешь аналитикой?
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665434
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

ТС нужен минимум на всем множестве заказов
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665451
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрElic,
ТС нужен минимум на всем множестве заказов
А что мешает сначала найти первые заказы?
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665488
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerEgoрElic,
ТС нужен минимум на всем множестве заказов
А что мешает сначала найти первые заказы?Где твой вариант?
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665493
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если задача не разовая, то рассмотрите добавление соответствующего атрибута в HYBRIS.USERS - это, среди прочего, спасет от неизбежного (для orders) housekeeping, способного убить все варианты вычислений по orders...
Если разовая или бросовая - то скалярный подзапрос вполне себе вариант.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665494
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрXMLerпропущено...

А что мешает сначала найти первые заказы?Где твой вариант?
Лень, все же примитивно.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665497
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerEgoрпропущено...
Где твой вариант?
Лень, все же примитивно.Ясен пень, что full table это примитивно.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665498
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicEgoр
Код: plsql
1.
       (SELECT MIN(ORDERS.CREATEDTS) FROM HYBRIS.ORDERS o1 WHERE o1.P_UID = o.P_UID) as first_order

Тоже не владеешь аналитикой?Хошь, как хошь, но я не вижу, как ты предлагаешь заюзать аналитику в запросе ТС.
...
Рейтинг: 0 / 0
Не могу сообразить, как присоединить еще один столбец
    #39665503
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрХошь, как хошь, но я не вижу, как ты предлагаешь заюзать аналитику в запросе ТС.Вопрос в том, что такое "первого заказа". Чтоб это лучше понять, нужно было под лупой разбирать 2-ой говнокод ...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу сообразить, как присоединить еще один столбец
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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