【发布时间】:2018-02-22 13:15:33
【问题描述】:
使用以下 sql 表:
表:财政
DateID | date | fiscal_year | fiscal_week
20170101 2017-01-01 00:00:00.0 2017 2017 WK 01
20170102 2017-01-02 00:00:00.0 2017 2017 WK 01
表:email_info
email_id | email_name | email_subjectline
123 New_Year_2017 Welcome the new year!
345 Reminder Don't forget
表:send_info
email_id | sent_date
123 | 1/1/2017 8:58:39 PM
345 | 1/2/2017 6:33:39 AM
表格:click_info
recipient | email_id | click_date
XYZ 123 1/7/2017 4:25:27 PM
ABC 123 1/5/2017 3:13:56 AM
CDF 345 1/6/2017 2:20:16 AM
ABC 345 1/14/2017 3:33:25 AM
显然每个表中有很多行。
电子邮件表之间的连接很简单。
SELECT *
FROM email_info
JOIN sent_info
ON sent_info.email_id = email_info.email_id
JOIN click_info
ON click_info.email_id = email_info.email_id
我正在努力解决以下问题:
- 如何将所有日期转换为相同的格式? (我不需要时间, 只有一天)
- 如何加入会计表,以便我可以按会计周过滤,例如
- 如何计算电子邮件在发送日期后 7 天内的所有点击次数(不能按日期硬编码,但必须是动态的)
这是我正在寻找的输出(按财政周过滤 = 2017 WK 01):
email_id | email_name | sent_date | fiscal_week | Clicks
123 New_year_2017 1/1/2017 2017 WK 01 2
345 Reminder 1/2/2017 2017 WK 01 1
*请注意,click_info 表示例中的最后一次点击未计算在内,因为它已超过发送日期后的 7 天。
** DateID 是整数,send_date 和 click_date 是字符串/varchar
【问题讨论】:
-
dateId、send_date、send_date 列是哪一种数据类型?
-
dateid 是整数,send_date 和 click_date 是字符串/varchar
-
字符串 varchar 带有日期和时间 .. 和整数,其数字等于日期 ..? ???很抱歉,但这不是设计数据库的合理方式..
标签: mysql sql date join format