  Quantifying the contribution of database facts to query answers has been
studied as means of explanation. The Banzhaf value, originally developed in
Game Theory, is a natural measure of fact contribution, yet its efficient
computation for select-project-join-union queries is challenging. In this
paper, we introduce three algorithms to compute the Banzhaf value of database
facts: an exact algorithm, an anytime deterministic approximation algorithm
with relative error guarantees, and an algorithm for ranking and top-$k$. They
have three key building blocks: compilation of query lineage into an equivalent
function that allows efficient Banzhaf value computation; dynamic programming
computation of the Banzhaf values of variables in a Boolean function using the
Banzhaf values for constituent functions; and a mechanism to compute
efficiently lower and upper bounds on Banzhaf values for any positive DNF
function.
  We complement the algorithms with a dichotomy for the Banzhaf-based ranking
problem: given two facts, deciding whether the Banzhaf value of one is greater
than of the other is tractable for hierarchical queries and intractable for
non-hierarchical queries.
  We show experimentally that our algorithms significantly outperform exact and
approximate algorithms from prior work, most times up to two orders of
magnitude. Our algorithms can also cover challenging problem instances that are
beyond reach for prior work.
