Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
OperDate | fiscalDriveNumber | shiftNumber | closeDateTime | openDateTime | status | totalSum | ='' |
---|---|---|---|---|---|---|---|
25.02.2018 | 8710000101378912 | 245 | 25.02.2018 | 24.02.2018 | close | 22794 | |
246 | 25.02.2018 | 25.02.2018 | close | 6622 | |||
247 | - | 25.02.2018 | open | 108934,19 | |||
8710000101379669 | 238 | 25.02.2018 | 23.02.2018 | close | 0 | ||
239 | - | 25.02.2018 | open | 4019 | |||
26.02.2018 | 8710000101378912 | 247 | 26.02.2018 | 25.02.2018 | close | 13007,01 | |
248 | - | 26.02.2018 | open | 94273,25 | |||
8710000101379669 | 239 | 26.02.2018 | 25.02.2018 | close | 0 | ||
240 | 26.02.2018 | 26.02.2018 | close | 8867,01 | |||
241 | - | 26.02.2018 | open | 0 | |||
27.02.2018 | 8710000101378912 | 248 | 27.02.2018 | 26.02.2018 | close | 8335,02 | |
249 | - | 27.02.2018 | open | 70258,18 | |||
8710000101379669 | 241 | 27.02.2018 | 26.02.2018 | close | 9703,05 | ||
242 | 27.02.2018 | 27.02.2018 | close | 1622,04 | |||
243 | - | 27.02.2018 | open | 0 | |||
28.02.2018 | 8710000101378912 | 249 | 28.02.2018 | 27.02.2018 | close | 12854,02 | |
250 | - | 28.02.2018 | open | 99891,32 |
Здравствуйте. Выше представлен пример выгруженных данных выручки смен касс с 25 по 28 число. Можно заметить что по одной и той же кассе (fiscalDriveNumber) номер смены (shiftNumber) в разных датах дублируется. Помогите пожалуйста решить задачу: Как в скрипте суммировать totalSum по одинаковым shiftNumber поместив результат на дату (OperDate) первого shiftNumber. В моём случае (выделено красным) 70258,18+12854,02=83112,2 поместить на 27.02.2018 с номером смены 249.
Привет.
Самое простое напрашивается:
load shiftNumber,
min(OperDate) as ShiftDate,
sum(totalSum) as ShiftSum
Resident tmp1 Group by shiftNumber ;
С учетом касс:
load shiftNumber,
fiscalDriveNumber,
min(OperDate) as ShiftDate,
sum(totalSum) as ShiftSum
Resident tmp1 Group by shiftNumber , fiscalDriveNumber;
Привет.
Самое простое напрашивается:
load shiftNumber,
min(OperDate) as ShiftDate,
sum(totalSum) as ShiftSum
Resident tmp1 Group by shiftNumber ;
С учетом касс:
load shiftNumber,
fiscalDriveNumber,
min(OperDate) as ShiftDate,
sum(totalSum) as ShiftSum
Resident tmp1 Group by shiftNumber , fiscalDriveNumber;
Спасибо за отклик. Да, но тогда сумма 9703,05 смены 241 уходит на 26 число:(
Сергей, предлагаю добавить openDateTime в Group by.
Похоже я всех запутал только. Короче по другому: Если у shiftNumber со статусом "Open" есть дубль в следующей дате со статусом "Close" то сложить их в первую дату.
Но openDateTime же у них одинаковый, это OperDate и статусы разные. Значит, openDateTime можно в группировку добавить.
Можно добавить условие на статус, т.о. собрать ключевую комбинацию полей и по ней выполнить расчет сумм.
В первую дату = минимальную дату.
Странно но похоже суммы садятся как-раз наоборот по closeDateTime за исключением дублей.
Спасибо за совет. Попробую. Правда долго будет. Опыт маленький ещё.
Решение "на вскидку"...
NoConcatenate
tmpN1:
LOAD shiftNumber,
sum(totalSum) as totalSum_,(min(date(openDateTime))) as openDateTime_,
(max(date(closeDateTime))) as closeDateTime_
Resident KKM Group by shiftNumber order by 1;
//OperDate = openDateTime