【发布时间】:2015-03-02 00:50:10
【问题描述】:
我有 5 个相互关联的表。我有一个收集所有数据的 JOIN 查询。我首先提供 cpv_id 作为来自用户的变量。通过中间的几个表,每个公司都与该 cpv_id 相关。每个公司都有自己的状态,可以是 1、2 或 3。这些状态正在变化,我需要获取状态为“3”的公司的百分比(但与提供的这个 cpv_id 相关)。
基本上,流程是这样的:
我从用户那里得到 cpv_id,我在 club_offer_cpv 表中找到它,我得到 club_offer_id,所以我可以连接到 club_offer 表。然后在 club_offer 表中我得到 club_id 以便我可以连接到 club 表。然后在 club 表中我得到 users_id 以便我可以连接到 users 表。然后在 users 表中我得到 company_id 所以我可以连接到最后一个 company_status 表( company_status 有外键 company_id)。 company_status 是我需要从中获取数据的地方。我需要这个:
这里我有 2 个感兴趣的领域:company_status 和 tstamp。
company_status 存储每个公司的状态,并且随着时间的推移而变化。在我之前创建数据库的人,每次状态更新时都会插入带有新状态的新行。最新 tstamp 的状态会显示给最终用户。我需要做的是向用户显示状态为“3”的公司的百分比。为此,我需要获取所有公司的所有状态数,以及所有拥有它的状态数“3”。问题是某些公司的状态可能为“3”,但之后它的状态为“2”(它已更改)。因此,我应该以某种方式仅获得 tstamp 最新的状态,因为最新状态将具有最新的时间戳。因此,如果某家公司同时拥有状态“2”和状态“3”,但状态“2”出现在状态“3”之后,我不应该算她。我应该只计算状态为“3”的公司为最新。我的麻烦来了,因为我不知道如何做到这一点。
在 SQL Fiddle 上,您将看到我目前所拥有的。所以我需要一个查询来计算所有最新状态(1、2 或 3)。然后我需要只计算最新的“3”状态的查询,所以我可以说 70% 的公司的状态为“3”。 这是目标。 计算状态为“3”的公司的百分比。
你可以在这里找到 SQL fiddle:http://sqlfiddle.com/#!2/a3e296/4
谁能帮我解决这个问题?谢谢
【问题讨论】:
-
您的意思是,计算具有最新状态“3”的公司的百分比。