繁体   English   中英

将不同的组划分为相同的组并计数?

[英]Group different groups as the same and count?

我有以下查询:

  SELECT owner,
         typeOwner,
         type,
         count(*) AS count
    FROM myTable 
GROUP BY typeOwner 
ORDER BY count DESC 
   LIMIT 0, 30

现在, typeOwner values = '<test>a</test>'但是,有时typeOwner字段将包含其他字符串,例如'<test>b</test> ,我如何让该查询计算<test>b</test>作为一组'<test>a</test>

我想为此例外,我的意思是typeOwner <test>a</test>typeOwner <test>b</test>应该被计为具有两个计数的一行。

这是一个小提琴: http ://sqlfiddle.com/#! 2/70053/1 ,看看

实际上,这些应该按<type></type><aId></aId>

“实际上,这些应按”进行分组

您可以按以下相对难看的方式进行分组:

GROUP BY LEFT(typeOwner, position('<xType>' in typeOwner) -1)

但是您最好以某种方式预处理数据。 我不确定MySQL如何处理xml,但是如果需要以任何频率进行此类处理,则在SQL Server中,我可能会将XML值提取到一流关系字段中。

sqlfiddle.com

根据您的sqlfiddle,这有效

SELECT 
left(typeOwner, instr(typeOwner, '<xType>')-1) as typeOwner,
owner,type, count(*) as count 
FROM `test` 
GROUP BY left(typeOwner, instr(typeOwner, '<xType>')-1)  
ORDER BY count DESC 
LIMIT 0 , 30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM