【问题标题】:MySQL View Multiple Tables DuplicatesMySQL查看多个表重复
【发布时间】:2019-03-17 02:24:55
【问题描述】:

我正在尝试创建一个包含多个表的视图,这些表包含统一的日期/帐户数据但不同的数据观察结果。

VISITS(Date, CompanyName, Visits)
SEARCHES(Date, CompanyName, Searches)
REPORTS(Date, CompanyName, Reports)

CREATE VIEW V AS 
    SELECT
        v.Date,
        v.CompanyName as Company,
        s.PageViews as Searches,
        r.PageViews as Reports
    FROM 
        Visits_r1 v
    LEFT JOIN
        Searches_r s ON v.CompanyName = s.CompanyName
    LEFT JOIN
        Reports_r r ON v.CompanyName = r.CompanyName
    WHERE
        v.Date = s.Date
    AND
        v.Date = r.Date;

但是我遇到的问题是数据重复;我想要按公司和日期划分的唯一数量的访问、搜索、报告。这可能吗?

【问题讨论】:

  • 请在您的问题中添加列的类型。那么,就我现在的理解而言,您想按(日期、公司名称)分组并获取该元组的总访问、搜索和报告?

标签: mysql join view duplicates


【解决方案1】:

您需要在加入表格后按 DatecompanyName 进行分组,并使用 SUM() 聚合方法获取总数每个(日期,公司)组。

CREATE VIEW V AS
    SELECT
        v.Date,
        v.CompanyName as Company,
        SUM(s.Searches) AS TotalSearches,
        SUM(r.Reports) AS TotalReports,
        SUM(v.Visits) AS TotalVisits
    FROM
        Visits AS v
    LEFT JOIN
        Searches AS s ON s.CompanyName = v.CompanyName AND s.Date = v.Date
    LEFT JOIN
        Reports AS r ON r.CompanyName = v.CompanyName AND r.Date = v.Date
    GROUP BY
        v.Date, v.CompanyName;

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2016-01-13
    • 2021-02-02
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多