从投票表中提取票数

问题描述

我有这两个表:

create table `polls`(
`pollid` smallint unsigned not null auto_increment,`question` varchar(40) not null,`answer1` varchar(30) not null,`answer2` varchar(30) not null,`answer3` varchar(30) default null,`answer4` varchar(30) default null,`answer5` varchar(30) default null,primary key(`pollid`)
);

create table `poll_votes`(
`void` mediumint unsigned not null auto_increment,`pollid` smallint unsigned not null,`ip_address` varchar(15) not null,`answer` tinyint unsigned not null,primary key(`void`),foreign key(`pollid`) references `polls`(`pollid`)
);

我在poll_votes.answer中存储了整数1-5,该数字是用户已投票的答案。

我想使用一个查询来连续检索所有5个答案的票数。

解决方法

您可以在此处使用条件聚合:

SELECT
    SUM(CASE WHEN answer = 1 THEN 1 ELSE 0 END) AS num_answer_1,SUM(CASE WHEN answer = 2 THEN 1 ELSE 0 END) AS num_answer_2,SUM(CASE WHEN answer = 3 THEN 1 ELSE 0 END) AS num_answer_3,SUM(CASE WHEN answer = 4 THEN 1 ELSE 0 END) AS num_answer_4,SUM(CASE WHEN answer = 5 THEN 1 ELSE 0 END) AS num_answer_5
FROM poll_votes;

要获取每个pollid的这些摘要统计信息,请使用:

SELECT
    pollid,SUM(CASE WHEN answer = 1 THEN 1 ELSE 0 END) AS num_answer_1,SUM(CASE WHEN answer = 5 THEN 1 ELSE 0 END) AS num_answer_5
FROM poll_votes
GROUP BY
    pollid;
,

如果要用于一个花粉 试试这个

let Highcharts3d = require("highcharts/highcharts-3d");
let HighchartsExporting = require("highcharts/modules/exporting"); 
,

MySQL有一个非常方便的简写形式用于计数:

SELECT SUM(answer = 1) AS num_answer_1,SUM(answer = 2) AS num_answer_2,SUM(answer = 3) AS num_answer_3,SUM(answer = 4) AS num_answer_4,SUM(answer = 5) AS num_answer_5
FROM poll_votes;

也就是说,布尔值在算术上下文中被视为数字,“ 1”为true,“ 0”为false。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...