By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,883 Members | 955 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,883 IT Pros & Developers. It's quick & easy.

Counting survey votes

P: n/a
Hi everyone,

Constructed a fairly big table with 20 rows, most of which are
TINYINTs based on user selection for a dropdown box. This is the form:

http://www.threechords.org/spb/survey/

Each field obviously corresponds to a row in the table, and the
majority are integers indicating the user's selection.

My issue is how to do meaningful stuff with the stored data. I believe
I need to use GROUP BY functionality but I'm not certain - how can I
calculate, say, the number of "1" ('Excellent') values for the field
"writing_quality"?

Matt

Jul 1 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a
>Constructed a fairly big table with 20 rows, most of which are
>TINYINTs based on user selection for a dropdown box. This is the form:

http://www.threechords.org/spb/survey/

Each field obviously corresponds to a row in the table, and the
majority are integers indicating the user's selection.
This doesn't really have that much to do with PHP; it's more related to
SQL and databases in general.
>My issue is how to do meaningful stuff with the stored data. I believe
I need to use GROUP BY functionality but I'm not certain - how can I
calculate, say, the number of "1" ('Excellent') values for the field
"writing_quality"?
select count(*) from survey where writing_quality=1;

If you want the whole distribution of votes:

select writing_quality, count(writing_quality) from survey group by writing_quality;

which will get you a list of writing_quality values and the number
of votes that gave that value, e.g.:

writing_quality count(writing_quality)
1 32
2 86
3 74
4 50
5 22
7 1

(note: it seems nobody voted "6", so it is not listed).

If you want an overall average:

select avg(writing_quality) from survey;

which might give you 2.8 as an average.

You can also try things like:

select avg(writing_quality) from survey where sex = 'Male' and age >= 20 and age < 30;

which gives you a score from a specific segment of your users.

Jul 1 '07 #2

P: n/a
On Jul 1, 7:47 pm, gordonb.fs...@burditt.org (Gordon Burditt) wrote:
Constructed a fairly big table with 20 rows, most of which are
TINYINTs based on user selection for a dropdown box. This is the form:
http://www.threechords.org/spb/survey/
Each field obviously corresponds to a row in the table, and the
majority are integers indicating the user's selection.

This doesn't really have that much to do with PHP; it's more related to
SQL and databases in general.
My issue is how to do meaningful stuff with the stored data. I believe
I need to use GROUP BY functionality but I'm not certain - how can I
calculate, say, the number of "1" ('Excellent') values for the field
"writing_quality"?

select count(*) from survey where writing_quality=1;

If you want the whole distribution of votes:

select writing_quality, count(writing_quality) from survey group by writing_quality;

which will get you a list of writing_quality values and the number
of votes that gave that value, e.g.:

writing_quality count(writing_quality)
1 32
2 86
3 74
4 50
5 22
7 1

(note: it seems nobody voted "6", so it is not listed).

If you want an overall average:

select avg(writing_quality) from survey;

which might give you 2.8 as an average.

You can also try things like:

select avg(writing_quality) from survey where sex = 'Male' and age >= 20 and age < 30;

which gives you a score from a specific segment of your users.
Thank you very much, I've managed to construct a nice-looking page
(http://www.threechords.org/spb/survey/results.php) - apologies for my
poor group choice here.

Matt

Jul 1 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.