大家好,大家好. 直接回答我的问题.

我的设想是这样的.我有一张桌子

  1. 如果第2列有数据,我需要获取第1列的sum(仅是一个示例
  2. 如果第二列是空的,我需要得到第一列的average(只是一个例子)
  3. 我需要它按名称分组,并有每个用户反映的计算

因此,我对列1进行了两种不同的计算,计算基于列2是否包含数据或空值

这是到目前为止我得到的结果,我能够得到总和,但当平均数达到时,我很难弄清楚.

SELECT T1.user_name, T1.Good_Hours, T2,*
(
   SELECT user_name, SEC_TO_TIME( SUM( TIME_TO_SEC( total_tat ) ) ) as Good_Hours
   FROM Table 1
   WHERE etc_type = "YES"
   WHERE date_time BETWEEN "(DATETIME example Only)" AND "(DATETIME example Only)"
   AND column2 IS NULL
   GROUP BY user_name
) as T1,
(
   SELECT COUNT(column2) , SEC_TO_TIME(AVG(TIME_TO_SEC(total_tat))) as NICE_TIME
   FROM Table 1
   WHERE etc_type = "YES"
   WHERE date_time BETWEEN "(DATETIME example Only)" AND "(DATETIME example Only)"
   AND column2 IS NOT NULL
   GROUP BY user_name
) as T2

到目前为止,我得到了正确的Good_Hours,但是第二个子 Select 只返回第一条记录,并对整个表重复它.

是不是有什么是我错过的,也许是我忽略了它.

如果可能的话,我在想结果是这样的.

user_name   -  missed_calls   - Good_Hours - NICE_TIME
John Doe           0             00:01:00    08:00:00
Jane Doe           5             00:14:00    29:00:00
Hugo Doe           9             00:47:00    00:10:00

但我得到的是这样的

user_name   -  missed_calls   - Good_Hours - NICE_TIME
John Doe           0             00:01:00    08:00:00
Jane Doe           5             00:14:00    08:00:00
Hugo Doe           9             00:47:00    08:00:00

我所要求的只是一些建议.谢谢.

了解更多信息

顶部的表格是包含原始数据的表格 下面的表格是我一直想做的结果

enter image description here

推荐答案

在这里,我将使用条件聚合.假设WHERE个条款中的范围相同:

SELECT
    user_name,
    SEC_TO_TIME(SUM(CASE WHEN column2 IS NULL THEN TIME_TO_SEC(total_tat) ELSE 0 END)) AS Good_Hours,
    SEC_TO_TIME(AVG(CASE WHEN column2 IS NOT NULL THEN TIME_TO_SEC(total_tat) END)) AS NICE_TIME
FROM Table1
WHERE etc_type = 'YES' AND
      date_time BETWEEN ? AND ?
GROUP BY user_name;

这种方法对表进行一次遍历,并根据值column2计算总和或平均值.

Mysql相关问答推荐

优化使用ORDER BY加载耗时较长的MySQL请求

可以优化这个带有重复WHERE子句的查询吗?

计算符合字段值只能包含一种事件类型这一事实的记录

Mysql-查找缺少列的表

为什么MySQL不同版本的值会变化?

SQL Select 最大值和平均值

MySQL 计数出现的百分比大于

基于多个 where 子句在规范化表中查找公共 ID(值)

MySQL Procedure 变量在 count(*) 上接收 null

如何在 MySQL 中使用从 SELECT IF 返回的布尔值

MySql部分匹配基于部分查询代码

安装 mysql-python (Windows)

默认为空字符串的列

仅在 MYSQL DATEDIFF 中显示小时数

MySQL行格式:固定和动态之间的区别?

在 MySQL 中找不到 outfile 创建的文件

在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录

判断多个列的一个值

为什么 GRANT 在 MySQL 中不起作用?

带有 WHERE 子句的 MySql 内连接