I'm using MySQL 5.6.
This is my source table:
form_unique_identifier field_number field_label total_drop_off total_visitors
FA11567953 0 Name 4 100
FA11567953 1 Dropdown 5 100
FA11567953 3 File 32 100
FA11567953 4 Multi select field 10 100
FA45345345 0 Name 1 233
FA45345345 11 Dropdown 7 233
FA45345345 31 File 2 233
FA45345345 44 Multi select field 3 233
FA45345356 2 Name 5 77
FA45345356 4 Dropdown 1 77
FA45345356 6 File 7 77
FA45345356 8 Multi select field 6 77
I am trying to find the total_field_visitors
.
The formula is -
total_field_visitors = total_visitors - total_drop_off of prior record
And I need it based on form_unique_identifier
and sorted by field_number
.
I wrote this query, but it doesn't seem to work well:
UPDATE table1 a
inner join table1 b
on a.form_unique_identifier = b.form_unique_identifier AND a.field_number < MIN(b.field_number)
SET a.total_field_visitors = a.total_visitors - b.total_drop_off
If it is the first field, then the total_field_visitors should be set equal to total_visitors.
This is my output table:
form_unique_identifier field_number field_label total_drop_off total_visitors total_field_visitors
FA11567953 0 Name 4 100 100
FA11567953 1 Dropdown 5 100 96
FA11567953 3 File 32 100 91
FA11567953 4 Multi select field 10 100 59
FA45345345 0 Name 1 233 233
FA45345345 11 Dropdown 7 233 232
FA45345345 31 File 2 233 225
FA45345345 44 Multi select field 3 233 223
FA45345356 2 Name 5 77 77
FA45345356 4 Dropdown 1 77 72
FA45345356 6 File 7 77 71
FA45345356 8 Multi select field 6 77 64