按不同周计算日名称的出现次数

Posted

技术标签:

【中文标题】按不同周计算日名称的出现次数【英文标题】:Counting Occurrences of Day Names By Distinct Weeks 【发布时间】:2012-03-06 13:04:43 【问题描述】:

如果这个问题措辞不当,请提前道歉!

我有一个带有日期时间字段的 mysql 表。如何计算不同周内每一天名称的出现次数?

这是我正在尝试的查询,以及它从刚刚超过 2 周的数据中得出的结果。它(显然)计算每条记录的每次出现,而我希望输出为 2 或 3。

SELECT dayname(datetime), COUNT(dayofweek(datetime)) 
   FROM mytable GROUP BY dayofweek(datetime);

+-------------------+----------------------------+
| dayname(datetime) | count(dayofweek(datetime)) |
+-------------------+----------------------------+
| Monday            |                        404 |
| Tuesday           |                        275 |
| Wednesday         |                        251 |
| Thursday          |                        196 |
| Friday            |                        201 |
| Saturday          |                        128 |
+-------------------+----------------------------+

按周分组并不能解决问题。我觉得好像我需要“计算一周的不同之处”,但我不确定这是否可能。

非常感谢任何指导,谢谢!

【问题讨论】:

【参考方案1】:

尝试计算 datetime 字段的不同值(仅限日期部分)。有关仅从日期时间字段返回日期部分的 COUNT(DISTINCT expr,[expr...])DATE(expr) 的更多信息。

SELECT dayname(datetime), COUNT(distinct date(datetime)) 
FROM mytable GROUP BY dayname(datetime);

【讨论】:

啊!现在这很有意义。 @Chriseyre2000 说我应该按我计数的内容进行分组是正确的。非常感谢您。【参考方案2】:

你通常会根据你没有计算在内的东西分组。

【讨论】:

此查询提供相同的结果(除了以不同的顺序列出日期名称)。不过,感谢您解释正确的 GROUP BY 用法。

以上是关于按不同周计算日名称的出现次数的主要内容,如果未能解决你的问题,请参考以下文章

按名称或签名计算函数调用。 GCC、C++

计算按某些行分组的出现次数

计算每个成员名称在带有条件的表中出现的次数

计算电子表格中的不同值

当通过R中的不同变量进行分组和汇总时,计算分类变量的出现次数

计算按日期范围拆分的值的先前出现次数