【问题标题】:Query with a group by and multiple "count"使用 group by 和多个“count”查询
【发布时间】:2021-06-21 19:58:18
【问题描述】:

我有一个 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 个代码

但我想知道我是否可以通过一个查询来实现我的目标。你能在这一点上提供帮助吗?

谢谢!

【问题讨论】:

    标签: mysql sql group-by


    【解决方案1】:

    你可以使用条件聚合比如

    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;
    

    【讨论】:

    • 它似乎不起作用。 used_codes、unused_codes 和 total_codes 返回所有相同的值:代码总数。好像没有考虑条件
    • 请重试@fraxool,刚刚将 COUNT 替换为 SUM 聚合
    • 你可以使用sum(used)sum(1-used)
    猜你喜欢
    • 2021-12-19
    • 2020-08-15
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多