I have a database setup like this:
Table called reviews
x
+ -------- +
| review |
+ -------- +
| awda |
| ggagw |
| okok |
| ligjr |
| kkfm |
| seff |
| oawr |
| abke |
| (null) |
| (null) |
| (null) |
| (null) |
| (null) |
| (null) |
| (null) |
+ -------- +
How do I get the percentage of how many rows there are, which are NOT NULL?
A basic “formula” of what I want:
percentage = 100 * ( (Sum of rows where review
is not null) / (Amount of rows) )
For the example above, this would be: percentage = 100 * ( ( 8 ) / ( 15) ) = 53.33333333
How can I achieve that by using only one MySQL query?
Advertisement
Answer
I think the simplest way is:
select avg( review is not null ) * 100
from reviews;
MySQL treats boolean expressions as numbers in a numeric context, with 0 for false and 1 for true.
Similar method does the explicit division:
select 100*count(review) / count(*)
from reviews;