Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 每天计数重复记录(无窗口功能)_Sql_Mariadb_Mariadb 10.1 - Fatal编程技术网

Sql 每天计数重复记录(无窗口功能)

Sql 每天计数重复记录(无窗口功能),sql,mariadb,mariadb-10.1,Sql,Mariadb,Mariadb 10.1,我每天都在尝试获取重复的客户记录,但在使用MariaDB 10.1时遇到了一些问题,因为直到10.2才引入窗口函数(因此没有分区、排名等) 我有一组数据示例,如下所示: | Date | Country | Type | Email | Response_Time | | ---------- | ------- | --------- | ------------- | ------------- | | 2021-05-21 | AU | En

我每天都在尝试获取重复的客户记录,但在使用MariaDB 10.1时遇到了一些问题,因为直到10.2才引入窗口函数(因此没有分区、排名等)

我有一组数据示例,如下所示:

| Date       | Country | Type      | Email         | Response_Time |
| ---------- | ------- | --------- | ------------- | ------------- |
| 2021-05-21 | AU      | Enquiry   | bill@fake.com | 910           |
| 2021-05-21 | AU      | Enquiry   | bill@fake.com | 1050          |
| 2021-05-21 | NZ      | Complaint | jim@fake.com  | 56            |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 1000          |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 845           |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 700           |
| 2021-05-22 | NZ      | Complaint | jim@fake.com  | 217           |
| 2021-05-23 | UK      | Enquiry   | jane@fake.com | 843           |
| 2021-05-23 | NZ      | Enquiry   | jim@fake.com  | 1795          |
| 2021-05-23 | NZ      | Enquiry   | jim@fake.com  | 521           |
| 2021-05-23 | AU      | Complaint | bill@fake.com | 150           |
| Country | Type      | Volume | Avg_Response_Time | Repeat_Daily |
| ------- | --------- | ------ | ----------------- | ------------ |
| AU      | Enquiry   | 2      | 980               | 1            |
| AU      | Complaint | 1      | 150               | 0            |
| NZ      | Enquiry   | 5      | 972               | 3            |
| NZ      | Complaint | 1      | 137               | 0            |
| UK      | Enquiry   | 1      | 843               | 0            |
可通过以下查询生成上述内容:

SELECT
    DATE(Start_Time) AS "Date",
    Country,
    Type,
    Email,
    Response_Time
FROM EMAIL_DETAIL
WHERE DATE(Start_Time) BETWEEN '2021-05-21' AND '2021-05-23'
AND COUNTRY IN ('AU','NZ','UK')
;
我希望获得在日期、国家和类型组中多次出现的电子邮件地址计数,并将其显示为如下摘要:

| Date       | Country | Type      | Email         | Response_Time |
| ---------- | ------- | --------- | ------------- | ------------- |
| 2021-05-21 | AU      | Enquiry   | bill@fake.com | 910           |
| 2021-05-21 | AU      | Enquiry   | bill@fake.com | 1050          |
| 2021-05-21 | NZ      | Complaint | jim@fake.com  | 56            |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 1000          |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 845           |
| 2021-05-22 | NZ      | Enquiry   | jim@fake.com  | 700           |
| 2021-05-22 | NZ      | Complaint | jim@fake.com  | 217           |
| 2021-05-23 | UK      | Enquiry   | jane@fake.com | 843           |
| 2021-05-23 | NZ      | Enquiry   | jim@fake.com  | 1795          |
| 2021-05-23 | NZ      | Enquiry   | jim@fake.com  | 521           |
| 2021-05-23 | AU      | Complaint | bill@fake.com | 150           |
| Country | Type      | Volume | Avg_Response_Time | Repeat_Daily |
| ------- | --------- | ------ | ----------------- | ------------ |
| AU      | Enquiry   | 2      | 980               | 1            |
| AU      | Complaint | 1      | 150               | 0            |
| NZ      | Enquiry   | 5      | 972               | 3            |
| NZ      | Complaint | 1      | 137               | 0            |
| UK      | Enquiry   | 1      | 843               | 0            |
重复每日计数是电子邮件地址在日期、国家和类型组中出现多次的记录计数。Volume是每个国家/地区和类型的记录总数

在这个版本的MariaDB中,由于缺少窗口功能,我感到很难过,如果您能提供帮助,我将不胜感激


(对于格式化为代码的表格表示歉意,我在尝试以其他方式发布时遇到格式化错误)

Hmmm。我认为这是两个层次的聚合:

SELECT country, type, SUM(cnt) as volume,
       SUM(Total_Response_Time) / SUM(cnt) as avg_Response_time,
       SUM(CASE WHEN cnt > 1 THEN cnt ELSE 0 END) as repeat_daily
FROM (SELECT DATE(Start_Time) AS "Date", Country, Type, Email,
             SUM(Response_Time) as Total_Response_Time, COUNT(*) as cnt
      FROM EMAIL_DETAIL
      WHERE DATE(Start_Time) BETWEEN '2021-05-21' AND '2021-05-23' AND
            COUNTRY IN ('AU','NZ','UK')
      GROUP BY date, country, type, email
     ) ed
GROUP BY country, type

什么是“卷”?卷只是该组记录的总数。我会编辑这篇文章。
UK
不应该是预期结果的一部分,因为
jane@fake.com
在表中只显示一次,不会重复。正确,重复日列显示英国查询为0,但仍有大量交互(1),平均响应时间。