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,它收集每日信息并汇总到一个表中,该表将包含日期和事件计数列。它每天只处理前一天的数据,因为它将在第二天运行。当您查询此数据时,您将获得以前期间的静态汇总数据,这将避免反复查询数据库和聚合数据。如果你在一天当中需要这些数据,将会有一个单独的解决方案。