在表xyz中,我有一行叫做components,还有一行叫做labref,labref的编号如下所示
表xyz
labref component
NDQA201303001 a
NDQA201303001 a
NDQA201303001 a
NDQA201303001 a
NDQA201303001 b
NDQA201303001 b
NDQA201303001 b
NDQA201303001 b
NDQA201303001 c
NDQA201303001 c
NDQA201303001 c
NDQA201303001 c
我想对组件进行分组,然后计算返回的行数,结果等于3,我编写了下面的SQL查询,但它无助于实现我的目标,而是为每个组件返回4
SELECT DISTINCT component, COUNT( component )
FROM `xyz`
WHERE labref = 'NDQA201303001'
GROUP BY component
查询返回
表xyz
labref component COUNT(component)
NDQA201303001 a 4
NDQA201303001 b 4
NDQA201303001 c 4
我现在想实现的是,从上面的结果,行计数和3返回的行数,任何变通办法是赞赏
6条答案
按热度按时间khbbv19g1#
试试这个不带子查询的简单查询:
查看此SQLFiddle
v7pvogib2#
你需要做-
您也可以按照@hims056 here的建议避免子查询
aydmsdu93#
我找到了解决办法。所以,如果你想计算组的数量,而不是每个组中元素的数量,并返回重复的值到结果表中的每个组记录,你应该在你的count函数上使用OVER()子句。
因此,例如上面的解决方案将是
我想这适用于任何使用GROUP BY的查询,附加信息,检查上面的链接。
r8xiu3jd4#
为什么不使用
num_rows
?如果使用此方法执行此操作,则不必以任何方式修改查询。
wh6knrhe5#
还有:
它应该返回:
| 拉雷夫|组件|计数|
| --------------|--------------|--------------|
| NDQA201303001|a|四|
| NDQA201303001|B|四|
| NDQA201303001|c|四|
而且,加分(我希望),没有子查询!
Based on this source。
fnx2tebb6#
选择labref,component,Count(*)作为Counts From xyz Group by labref,component