@Anonymous I was unable to find an elegant solution to your problem, but after testing this does appear to work. I tried to cut down as much as I could, but I hope it helps.
I created two dictionaries for your variables. Compose is the scoring dictionary and Count is the dictionary to use when determining total possible points available.
I then ran an Apply to Each for each row in your SharePoint List. If you are only pulling one item at a time, the apply to each would not be necessary.
Totals:
add(add(add(add(int(outputs('Compose')[item()?['Recommended']]),int(outputs('Compose')[item()?['Report']])),add(int(outputs('Compose')[item()?['Testing']]),int(outputs('Compose')[item()?['Training']]))),add(int(outputs('Compose')[item()?['KPIs']]),int(outputs('Compose')[item()?['Workflows']]))),add(if(greater(length(item()?['Link 1']),0),1,0),if(greater(length(item()?['Link 2']),0),1,0)))
Essentially you are calling the dictionary with the output of the grade selection.
outputs('Compose) = Dictionary
[item()?['Recommended']] = Your current item's value for the category. If your item's Recommended value was "Yes", this would say outputs('Compose')['Yes'], which would return a 2.
Counts:
add(add(add(add(int(outputs('Count')[item()?['Recommended']]),int(outputs('Count')[item()?['Report']])),add(int(outputs('Count')[item()?['Testing']]),int(outputs('Count')[item()?['Training']]))),add(int(outputs('Count')[item()?['KPIs']]),int(outputs('Count')[item()?['Workflows']]))),2)
Skipped the two links at the end since you said those are graded no matter what. This will provide a count of all possible grades for anything other than N/A. I used a 2 point value for each in this list due to 2 being the highest possible score possible.
Outcome:
mul(div(float(outputs('Totals')),float(outputs('Counts'))),100)
Just divides the two and multiplies by 100 to give you a percentage value. Make sure to use 'float' before each value or you will only get 100 as the result.
Output Example:
| Link 1 | Link 2 | Recommended | Report | Testing | Training | KPIs | Workflows |
| www.google.com | | Yes | Partial | N/A | No | Yes | N/A |
| | | Partial | Partial | Yes | No | Yes | Yes |
| Recommended | Report | Testing | Training | KPIs | Workflows | Link 1 | Link 2 | Totals | Counts | Percentage |
| 2 | 1 | | 0 | 2 | | 1 | 0 | 6 | 10 | 60 |
| 1 | 1 | 2 | 0 | 2 | 2 | 0 | 0 | 8 | 14 | 57.14 |
I hope this solves your issue