项目和类别(1:N)如何在单个SQL查询中获取每个类别的活动项目总数和总数量?

| 项目
item_id
title
active = 1/0
items_categories_map
item_id
category_id
我需要得到结果
category_id
items_total (any value of items.active)
items_active (items.active = 1)
items_inactive (items.active = 0)
是否可以在不使用UNION的情况下通过单个SQL查询获得这样的结果? 谢谢!     
已邀请:
使用如下模板:
COUNT(items.active) AS items_total,
SUM(items.active)   AS items_active,
SUM(1-items.active) AS items_inactive
或者当您的值不是1或0时...
SUM(CASE WHEN items.active = 0 THEN 1 ELSE 0 END) as items_inactive
    
要添加到Dems中:如果要分组并总计,请使用:
select items.id
 , COUNT(items.active) AS items_total
 , SUM(ifnull(items.active,0)) AS items_active
 , SUM(1-ifnull(items.active,0)) AS items_inactive
FROM items
GROUP BY items.somefield WITH ROLLUP

+------+-------------+---------------+----------------+
| id   | items_total | items_active  | items_inactive |
+------+-------------+---------------+----------------+
| 1    | 2           | 1             | 1              |
| 2    | ....
| null |100          | 60            | 40             |<<- grand total
+------+-------------+---------------+----------------+
with rollup
,您将在底部看到一个总计的行。 是否需要ifnull? 如果items.active可以为null,则需要在其中加ѭ7,以防止总和评估为null并弄乱您的结果。     

要回复问题请先登录注册