尝试选择数据,然后对 mariadb 中的所选数据进行平均

Posted

技术标签:

【中文标题】尝试选择数据,然后对 mariadb 中的所选数据进行平均【英文标题】:Trying to select data and then do a average on the selected data in mariadb 【发布时间】:2021-10-13 06:44:00 【问题描述】:

SELECT 计数 FROM (SELECT COUNT(ch_id) AS 计数 FROM tbl_warrants_checked 在哪里status =“活动” 分组dateChecked);

【问题讨论】:

请描述你想要什么。样本数据和期望的结果会有所帮助。 我想计算 ID 列并按 dateChecked 分组,女巫是他们检查权证的那一天,然后我需要当天检查的权证数量的平均值,然后发布到我的 dahsbaord 作为上个月每天检查的权证的平均值 【参考方案1】:

这使用 MariaDB 10.5,但应该适用于 ~10.2.2 之后的任何版本。

如果我们假设每天都有数据,或者我们不关心没有数据的日子,下面将计算自 1 个月前(数据的最后一个月)以来每天的平均检查次数:

-- Average of counts per day since ~1 month ago.
-- Only for days present in the set
SELECT AVG(counts) AS average
  FROM (
          SELECT COUNT(ch_id) AS counts
            FROM tbl_warrants_checked
           WHERE status = 'active'
             AND dateChecked > (current_date - INTERVAL '1' MONTH)
           GROUP BY dateChecked
       ) AS x
;

示例结果:

+---------+
| average |
+---------+
|  3.2941 |
+---------+

如果我们希望计算缺失天数并将其视为 0,则以下代码生成自 1 个月前以来的天数和LEFT JOINs,其中包含每天找到的计数:

-- Average of counts per day since ~1 month ago.
-- Treat missing days as 0
WITH RECURSIVE dates (date) AS (
          SELECT current_date UNION ALL
          SELECT date - INTERVAL '1' DAY FROM dates
           WHERE date > (current_date - INTERVAL '1' MONTH)
     )
SELECT AVG(COALESCE(counts, 0)) AS average
  FROM dates AS d
  LEFT JOIN (
          SELECT dateChecked
               , COUNT(ch_id) AS counts
            FROM tbl_warrants_checked
           WHERE status = 'active'
             AND dateChecked > (current_date - INTERVAL '1' MONTH)
           GROUP BY dateChecked
       ) AS x
    ON d.date = x.dateChecked
;

示例结果:

+---------+
| average |
+---------+
|  1.7500 |
+---------+

Working test case with data which produces the above results

注意:我们也可以计算缺失的天数,并在没有递归和JOIN 的情况下将其用于最终计算。还有另一种简化。

【讨论】:

以上是关于尝试选择数据,然后对 mariadb 中的所选数据进行平均的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery访问具有值= xx的所选项目名称的值

在Flutter中的所选BottomNavigationBarItem顶部显示图块

在 DAX 中测量以计算仅适用于 Power BI 的所选月份的 YTD

python 删除ListWidget中的所选项目

添加对不同于 id 的所选列的引用

用于单选的所选插件的占位符文本不起作用