In C, global variables always have static duration;
You may be confusing scope with linkage.
That is, in C global variables have global scope. That is, they can be accessed by any function in the implementation file where the global variable is defined.
To do that, they must exist for the life of the program.
Now if the global is defined as static, it means the
linkage is internal. Variables with internal linkage are accessible only in the current implementation file. By default, global variables have external linkage which means they can be accessed from other implementation files if those files use the extern storage class specifier.
For local variables in functions, coding them static means that they are acessible only in the current implementation file (where the function is defined) plus the static allows the variable to exist after the function completes. So, it has internal linkage and function scope. Static global variables also have internal linkage but file scope.