MySQL - 计算计数?

标签 mysql count

我正在尝试聚合从 MySQL 数据库中提取的一些数据。

我使用的查询是:

SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`,
COUNT(distinct IF(sourcelist.hasExtension=1,NAME,NULL)) as Ext, 
COUNT(distinct IF(sourcelist.hasExtension=0,NAME,NULL)) as NoExt,
COUNT(distinct NAME) as `All`
FROM sourcelist, main_small 
WHERE sourcelist.SourcePUID = 'My_Variable' AND main_small.NAME = sourcelist.SourceFileName 
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`

我想知道是否有一种方法可以计算这个结果,这样我就可以制作一个新表格来显示如下内容:

每个不同的 PUID、(不同 DROID_V 的计数)、(不同 Sig_V 的计数)、(NAME 的总命中数) WHERE sourcelist.SourcePUID = 'My_Variable' AND main_small.NAME = sourcelist.SourceFileName

如你所见,我真的不太擅长 SQL!

源表:

CREATE TABLE `t1` (
 `DROID_V` int(1) DEFAULT NULL,
 `Sig_V` varchar(7) DEFAULT NULL,
 `SPEED` varchar(4) DEFAULT NULL,
 `ID` varchar(7) DEFAULT NULL,
 `PARENT_ID` varchar(10) DEFAULT NULL,
 `URI` varchar(10) DEFAULT NULL,
 `FILE_PATH` varchar(68) DEFAULT NULL,
 `NAME` varchar(17) DEFAULT NULL,
 `METHOD` varchar(10) DEFAULT NULL,
 `STATUS` varchar(14) DEFAULT NULL,
 `SIZE` int(10) DEFAULT NULL,
 `TYPE` varchar(10) DEFAULT NULL,
 `EXT` varchar(4) DEFAULT NULL,
 `LAST_MODIFIED` varchar(10) DEFAULT NULL,
 `EXTENSION_MISMATCH` varchar(32) DEFAULT NULL,
 `MD5_HASH` varchar(10) DEFAULT NULL,
 `FORMAT_COUNT` varchar(10) DEFAULT NULL,
 `PUID` varchar(15) DEFAULT NULL,
 `MIME_TYPE` varchar(24) DEFAULT NULL,
 `FORMAT_NAME` varchar(10) DEFAULT NULL,
 `FORMAT_VERSION` varchar(10) DEFAULT NULL,
 `INDEX` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`INDEX`)
) ENGINE=MyISAM AUTO_INCREMENT=960831 DEFAULT CHARSET=utf8

示例记录:

5;"v37";"slow";"10266";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/7";"image/tiff";"Tagged Ima";"3";"191977"
5;"v37";"slow";"10268";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/8";"image/tiff";"Tagged Ima";"4";"191978"
5;"v37";"slow";"10269";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/9";"image/tiff";"Tagged Ima";"5";"191979"
5;"v37";"slow";"10270";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/10";"image/tiff";"Tagged Ima";"6";"191980"

最佳答案

当然只需做类似的事情

Select Count(*) From (Select * From SomeTable) adummynamesoSqlParserDoesntgetupset

因此,请将您的查询放在 FROM 之后的括号中,为其指定一个唯一的名称,您可以将其视为表或 View 。

关于MySQL - 计算计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470357/

相关文章:

mysql - 在哪里可以找到死服务器的 MySQL 版本?

php - 读取文件或在数据库中搜索?

count - 如何计算 pig 关系中的行数

mysql - 在两个表上使用 Where 和 Count

php - 通过日期过滤获取出现次数

php - OneToMany 关系中的 Doctrine2 查询错误

php - 使用链接更改表格内容

php - 使用数据库表中的特定数据行填充表单字段以更新 PHP MYSQL

java - 在java中更改整数的值

mysql - 计算多列中出现的次数