Date 对不同日期值的记录进行计数

Date 对不同日期值的记录进行计数,date,plsql,count,Date,Plsql,Count,假设我们有一个包含事件和发生日期的表,它看起来像: +-------------+---------------+ | event_token | date_recorded | +-------------+---------------+ | event_1 | 06.11.2017 | +-------------+---------------+ | event_2 | 06.11.2017 | +-------------+---------------+

假设我们有一个包含事件和发生日期的表,它看起来像:

+-------------+---------------+
| event_token | date_recorded |
+-------------+---------------+
| event_1     | 06.11.2017    |
+-------------+---------------+
| event_2     | 06.11.2017    |
+-------------+---------------+
| event_3     | 06.11.2017    |
+-------------+---------------+
| event_4     | 06.11.2017    |
+-------------+---------------+
| event_1     | 05.11.2017    |
+-------------+---------------+
| event_7     | 05.11.2017    |
+-------------+---------------+
| event_5     | 04.11.2017    |
+-------------+---------------+
+------------+-------------+
| date       | event_count |
+------------+-------------+
| 06.11.2017 | 4           |
+------------+-------------+
| 05.11.2017 | 2           |
+------------+-------------+
| 04.11.2017 | 1           |
+------------+-------------+
返回每天发生的事件总数的最佳sql语句是什么。 预期结果应如下所示:

+-------------+---------------+
| event_token | date_recorded |
+-------------+---------------+
| event_1     | 06.11.2017    |
+-------------+---------------+
| event_2     | 06.11.2017    |
+-------------+---------------+
| event_3     | 06.11.2017    |
+-------------+---------------+
| event_4     | 06.11.2017    |
+-------------+---------------+
| event_1     | 05.11.2017    |
+-------------+---------------+
| event_7     | 05.11.2017    |
+-------------+---------------+
| event_5     | 04.11.2017    |
+-------------+---------------+
+------------+-------------+
| date       | event_count |
+------------+-------------+
| 06.11.2017 | 4           |
+------------+-------------+
| 05.11.2017 | 2           |
+------------+-------------+
| 04.11.2017 | 1           |
+------------+-------------+

由于即使重复也要对每个事件进行计数,所以只需按日期进行聚合并对记录进行计数

SELECT date_recorded AS date, COUNT(*) AS event_count
FROM your_table
GROUP BY date_recorded;

如果按天计数,可以按日期计数,并尝试排除时间戳

SELECT to_char(date_recorded,'yyyy/mm/dd') as date, COUNT(*) as event_count
FROM your_table
group by date_recorded; 

提示:分组方式。。。顺便问一下,如果同一事件在同一天发生两次,你算一次还是两次?我们算两次@Timbiegeleisenth最好的解决方案不仅仅是一个SQL,而是为此提供一个小型DW解决方案。将有一个每天运行的作业,比如00:00:01,它收集每日信息并汇总到一个表中,该表将包含日期和事件计数列。它每天只处理前一天的数据,因为它将在第二天运行。当您查询此数据时,您将获得以前期间的静态汇总数据,这将避免反复查询数据库和聚合数据。如果你在一天当中需要这些数据,将会有一个单独的解决方案。