mysql - 使用大于号计数

标签 mysql count aggregate-functions

我有一个查询,看起来像这样:

SELECT
cat_code, cat_desc,
count(mthtrn > 0),
count(ltmtrn)
from my_temp_table
group by cat_code
order by mthsls desc;

如何让我的第一个 count() 只获取值大于零的计数,但在第二个中获取所有值?我可以用 sum() 做的更好,但我似乎做不到 if for count,即使没有抛出错误也是如此。

理想情况下,这会很棒:

SELECT
cat_code, cat_desc,
count(distinct member_id having mthtrn > 0),
count(ltmtrn)
from my_temp_table
group by cat_code
order by mthsls desc;

我知道它无效,但类似的东西。

最佳答案

使用:

SELECT
cat_code, cat_desc,
count(distinct case when mthtrn > 0 then member_id end),
count(ltmtrn)
from my_temp_table
group by cat_code
order by mthsls desc;

关于mysql - 使用大于号计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16698224/

相关文章:

mysql - 根据条件将行转为列

带计数和大小写语句的SQL查询

MySQL 有 2 个表

sql - 左连接嵌套选择和聚合函数

aggregate-functions - BigQuery 中的 TOP_COUNT 和 TOP_MAXCOUNT 是什么?

MySql localhost 与 Amazon RDS 实例

php - 将图像上传到 MySQL,出现无数错误

mysql - 在 mysql 中选择当前日期和当前日期后 3 个月之间的日期

Perl 使用数组散列的散列计算每秒的日志条目数

mysql - 有没有办法输出具有更多实例的值?