Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MYSQL get count of each column where it equals a specific value

Tags:

sql

mysql

count

I recently set up a MYSQL database connected to a form filled with checkboxes. If the checkbox was selected, it would insert into the associated column a value of '1'; otherwise, it would receive a value of '0'.

I'd like to eventually look at aggregate data from this form, and was wondering if there was any way I could use MYSQL to get a number for each column which would be equal to the number of rows that had a value of '1'.

I've tried variations of:

select count(*) from POLLDATA group by column_name

which was unsuccessful, and nothing else I can think of seems to make sense (admittedly, I'm not all too experienced in SQL).

I'd really like to avoid:

select count(*) from POLLDATA where column_1='1'

for each column (there close to 100 of them). Is there any way to do this besides typing out a select count(*) statement for each column?

EDIT:

If it helps, the columns are 'artist1', 'artist2', ....'artist88', 'gender', 'age', 'city', 'state'. As I tried to explain below, I was hoping that I'd be able to do something like:

select sum(EACH_COLUMN) from POLLDATA where gender='Male', city='New York City';

(obviously EACH_COLUMN is bogus)

like image 588
dryan93 Avatar asked Nov 11 '13 18:11

dryan93


People also ask

How do I count the number of particular column values in MySQL?

MySQL COUNT(*) with GROUP BY Clause It returns the total number of values residing in each group. For instance, if you want to check each user's number separately, you have to define the column 'User' with the GROUP BY clause while counting records for each user with COUNT(*). >> SELECT User, COUNT(*) FROM data.

Can we use count in WHERE clause in MySQL?

1. SQL SELECT COUNT with WHERE clause. SQL SELECT COUNT() can be clubbed with SQL WHERE clause. Using the WHERE clause, we have access to restrict the data to be fed to the COUNT() function and SELECT statement through a condition.

How do you count the number of times a value appears in a column MySQL?

The MySQL COUNT() function allows you to count how many times a certain value appears in your MySQL database. The function can also help you to count how many rows you have in your MySQL table. The function has one expression parameter where you can specify the condition of the query.


1 Answers

A slightly more compact notation is SUM( IF( expression ) ).

For the askers example, this could look something like:

select
  count(*) as total,
  sum(if(gender = 'MALE', 1, 0)) as males,
  sum(if(gender = 'FEMALE', 1, 0)) as females,
  sum(if(city = 'New York City', 1, 0)) as newYorkResidents
from POLLDATA;

Example result:

+-------+-------+---------+------------------+
| total | males | females | newYorkResidents |
+-------+-------+---------+------------------+
|    42 |    23 |      19 |               42 |
+-------+-------+---------+------------------+
like image 136
Patrick M Avatar answered Sep 29 '22 22:09

Patrick M