IFNULL只返回0,任何方式使这项工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IFNULL只返回0,任何方式使这项工作?相关的知识,希望对你有一定的参考价值。

我正在进行查询以计算必须等待超过30分钟的用户百分比。外部查询从过去30天中选择用户类型(有6种类型)和用户总数(按其user_type分组)。

子查询旨在返回所有必须等待超过30分钟的用户的计数。

我遇到的问题是,取决于诊所,有时没有用户必须等待超过30分钟,所以我将丢失行,而mysql将无休止地尝试执行查询

我尝试使用COALESCE和IFNULL,但他们没有按照我的意愿返回0,因为我还需要使用GROUP BY来保持行分开

是否有另一种方法可以让没有结果的行返回0而不是完全被排除?

这是我的查询:

SELECT
user_type,
count(user_type) total_users,
        (SELECT
        count(user_type)
        FROM
        my_clinic
        WHERE Appt_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
        AND clinic = 'Baseball'
        AND wait_time > 30
        GROUP BY user_type) as total_over_thirty
FROM
my_clinic
WHERE Appt_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
AND clinic = 'Baseball'
GROUP BY user_type

预期输出应该看起来像这样

user_type total_users total_over_thirty
type1        300           25
type2        400           45
type3        600           15
type4        250           45
type5        300           15
type6        300           28

但是当有0个用户等待不到30分钟的特定user_type时,会出现行不匹配,并且在查询中抛出一个扳手

答案

您可以在没有子查询的情况下执行查询:

SELECT
  user_type,
  count(user_type) total_users,
  sum(if (wait_time>30, 1, 0)) as total_over_thirty
FROM my_clinic
WHERE Appt_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW() AND clinic = 'Baseball'
GROUP BY user_type

以上是关于IFNULL只返回0,任何方式使这项工作?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL IFNULL()函数用法MySQL

如何用MYSQL的IFNULL()编写一句完整的话?

Android:以编程方式在片段中添加多个 RecyclerView

以编程方式将按钮添加到片段

SQL 中的 IFNULL和NULLIF

mysql中ifnull的用法