As a fitness trainer I have 2 sheets in Google Sheets to track invoiced and consumed training sessions:
source customerId customerName eventType eventName dateTime cancelled
Calendly JEAN Jean Claude Group training SMALL GROUP 15-12-2024 11:00 (Sun) FALSE
Google CHUCK Chuck Norris Personal training 1-ON-1 18-12-2024 0:00 (Wed) FALSE
Google CHUCK Chuck Norris Group training SMALL GROUP 18-12-2024 0:00 (Wed) TRUE
Calendly CHUCK Chuck Norris Group training SMALL GROUP 15-12-2024 10:00 (Sun) FALSE
Calendly CHUCK Chuck Norris Group training SMALL GROUP 15-12-2024 10:00 (Sun) FALSE
InvoiceNr InvoiceDate PaymentModel Activity CustomerID CustomerName Sessions
0001 02/05/2021 Subscription Personal training CHUCK Chuck Norris 5
0002 02/05/2021 Voucher Group training CHUCK Chuck Norris 10
0003 02/05/2021 Voucher Group training CHUCK Chuck Norris 10
0004 02/05/2021 Voucher Group training JEAN Jean Claude 5
I'm now trying to find a way to create an overview of the sessions invoiced and the sessions consumed, with the source data in both sheets.
In another sheet it would be great to get a summary of all invoiced, consumed and remaining training sessions.
CustomerID CustomerName Invoiced Consumed Remaining
CHUCK Chuck Norris 20 2 18
JEAN Jean Claude Vandamme 5 1 4
Currently I got as far as making a sum of all invoiced session:
=QUERY(
CustomerInvoices,
"SELECT E, F, SUM(G)
WHERE D = 'Group training'
GROUP BY E, F
LABEL E 'CustomerID', F 'CustomerName', SUM(G) 'Invoiced'"
)
How is it possible to count the Consumed
sessions for each client (Activity = 'Group training' and not cancelled)? Remaining sessions would be Invoiced
minus Consumed
.
What I've tried already fails:
=QUERY(
CustomerInvoices,
"SELECT E, F, SUM(G), ( SELECT COUNTIFS(CalendarEvents!B, InvoiceContent!A, CalendarEvents!D, 'Group training', CalendarEvents!G, FALSE)
WHERE CalendarEvents!D = 'Group training'
)
WHERE D = 'Group training'
GROUP BY E, F
LABEL E 'CustomerID', F 'CustomerName', SUM(G) 'Invoiced'"
)
Thank you for your help.
Try the following formula-
=QUERY(LET(x,QUERY(
CustomerInvoices,
"SELECT E, F, SUM(G)
WHERE D = 'Group training'
GROUP BY E, F"),
y,BYROW(x,LAMBDA(r,COUNTIFS(CalendarEvents!B:B,CHOOSECOLS(r,1),CalendarEvents!C:C,CHOOSECOLS(r,2),CalendarEvents!D:D,"Group training",CalendarEvents!G:G,FALSE))),
z,MAP(CHOOSECOLS(x,3),y,LAMBDA(a,b,IFERROR(a-b,0))),
HSTACK(x,y,z)),"offset 1 LABEL Col1 'CustomerID', Col2 'CustomerName', Col3 'Invoiced', Col4 'Consumed', Col5 'Remain'",0)