[英]Having two (or three?) counts in one query MYSQL (Via phpmyadmin)
我很高兴地问了这个问题,已经看了几次答案,但似乎找不到适合我特定数据集的解决方案...(主要是由于我的新手水平,并没有真正完全理解对查询的各个元素进行排序的语法含义)。
我正在尝试在单个结果表中运行两个“计数”-我可以使单个表很好-能够汇总结果将极大地加快我的分析速度。
具体查询为:
(1)
SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`
, COUNT(distinct NAME) as NoExt
FROM sourcelist, main_small
WHERE sourcelist.SourcePUID = 'MyVariableHere'
AND main_small.NAME = sourcelist.SourceFileName
AND sourcelist.hasExtension = 0
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED`
ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`;
和(2)
SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`
, COUNT(distinct NAME) as Ext
FROM sourcelist, main_small
WHERE sourcelist.SourcePUID = 'MyVariableHere'
AND main_small.NAME = sourcelist.SourceFileName
AND sourcelist.hasExtension = 1
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED`
ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`;
如果我想做的事情是可行的,我真的很想看看我是否可以隐含第三个数:
(3)
SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`
, COUNT(distinct NAME) as All
FROM sourcelist, main_small
WHERE sourcelist.SourcePUID = 'MyVariableHere'
AND main_small.NAME = sourcelist.SourceFileName
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED`
ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`;
我想知道是否有人可以取消我所做的事情,然后让我知道我想要的东西是否可能-3个计数(表,组条件和订单明细)和差异有一些共同之处在哪里条件。
即使使用两个count查询,也将存在空值,其中count A将导致与count B产生不同的集合-所以我想知道count是否需要导致相同的基本形状(即,相同的行生成,只是不同的count值) ,而不是计算特定的行生成,导致其中一项计数为空)
要合并(1)和(2),可以使用COUNT(distinct IF( .., .., ..))
构造,然后删除hasExtension
上的WHERE条件,也可以将(3)合并:
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 = 'MyVariableHere' AND main_small.NAME = sourcelist.SourceFileName
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.