Mysql 计算SQL中每个父元素下每个子元素的评级

Mysql 计算SQL中每个父元素下每个子元素的评级,mysql,sql,relational-database,Mysql,Sql,Relational Database,我的表格如下: 需要找到父项下具有不同评级的子元素的数量,如下所示 例如:在元素'1'下,有三个子元素,即2,3,4,评级分别为C、B、C。因此,没有评级为'A'的子元素(ren),但有评级为'B'的1元素和评级为'C'的2元素 到目前为止,我尝试根据父ID进行分组并过滤评级,但我无法使用联接构建单个查询。您可以使用条件聚合: 您可以使用条件聚合: 这是一个pivot查询,mysql不支持它们。解决办法变得非常丑陋,非常快。最好在客户端代码中进行数据透视。这是一个数据透视查询,mysql不支

我的表格如下:

需要找到父项下具有不同评级的子元素的数量,如下所示

例如:在元素'1'下,有三个子元素,即2,3,4,评级分别为C、B、C。因此,没有评级为'A'的子元素(ren),但有评级为'B'1元素和评级为'C'2元素

到目前为止,我尝试根据父ID进行分组并过滤评级,但我无法使用联接构建单个查询。

您可以使用条件聚合:

您可以使用条件聚合:


这是一个pivot查询,mysql不支持它们。解决办法变得非常丑陋,非常快。最好在客户端代码中进行数据透视。这是一个数据透视查询,mysql不支持它们。解决办法变得非常丑陋,非常快。你最好在客户端代码中进行数据透视。太棒了!!!我想我可以在我的其他查询中使用条件聚合tooo@GiorgosAwesome!!!我想我可以在我的其他查询tooo@Giorgos中使用条件聚合
SELECT ParentID, 
       COUNT(CASE WHEN Rating = 'A' THEN 1 END) AS A,
       COUNT(CASE WHEN Rating = 'B' THEN 1 END) AS B,
       COUNT(CASE WHEN Rating = 'C' THEN 1 END) AS C
FROM mytable
WHERE ParentID IS NOT NULL
GROUP BY ParentID