使用 group by 和多个“计数”进行查询

时间:2021-06-21 19:58:18

标签: mysql sql group-by

我有一个 MySQL 表,其中包含一些按名为 tag 的列分组的唯一代码。每个代码代表 MySQL 表中的一行,并且有一个名为 used 的整数列(值为 0 或 1)。

我的目标是查询列出所有标签以及代码总数、已使用代码数 (used = 1) 和未使用代码数 (used = 0 ) 用于此特定标签。

我可以使用以下查询从“代码”表中检索标签列表:

SELECT tag FROM codes WHERE user_id = ? GROUP BY tag;

最终结果如下:

  • tag1:使用了 12 个代码和未使用的 14 个代码,总共 26 个代码
  • tag2 : 2 个代码使用,6 个代码未使用,总共 8 个代码

但我想知道是否可以通过一个查询来实现我的目标。你能帮忙解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用条件聚合,例如

SELECT tag, 
       SUM(used = 1) AS used_codes, 
       SUM(used = 0) AS unused_codes, 
       COUNT(*) AS total_codes 
  FROM codes 
 WHERE user_id = ? 
 GROUP BY tag;