MySQL选择给定日期之前的最新日期来计算总和()
我正在为我的一个班做作业,到处寻找我问题的答案,但找不到答案。我有两张桌子在用 它们是:MySQL选择给定日期之前的最新日期来计算总和(),mysql,sql,Mysql,Sql,我正在为我的一个班做作业,到处寻找我问题的答案,但找不到答案。我有两张桌子在用 它们是: TaxAreaAuthority TaxRates +--------------+---------+ +--------------+------------+-------------+ | TaxAuthority | TaxArea | | TaxAuthority | Effective | AuthTaxRate | +-----------
TaxAreaAuthority TaxRates
+--------------+---------+ +--------------+------------+-------------+
| TaxAuthority | TaxArea | | TaxAuthority | Effective | AuthTaxRate |
+--------------+---------+ +--------------+------------+-------------+
| city1 | city1 | | city1 | 1993-01-01 | 1.0 |
| city2 | city2 | | city1 | 1994-01-01 | 1.5 |
| city3 | city3 | | city2 | 1993-09-01 | 1.5 |
| county1 | city1 | | city2 | 1994-01-01 | 2.0 |
| county1 | city2 | | city2 | 1995-01-01 | 2.5 |
| county2 | city3 | | city3 | 1993-01-01 | 1.9 |
| state1 | city1 | | city3 | 1993-07-01 | 2.3 |
| state1 | city2 | | county1 | 1993-01-01 | 2.3 |
| state1 | city3 | | county1 | 1994-10-01 | 2.5 |
+--------------+---------+ | county1 | 1995-01-01 | 2.7 |
| county2 | 1993-01-01 | 2.4 |
| county2 | 1994-01-01 | 2.7 |
| county2 | 1995-01-01 | 2.8 |
| state1 | 1993-01-01 | 0.5 |
| state1 | 1994-01-01 | 0.8 |
| state1 | 1994-07-01 | 0.9 |
| state1 | 1994-10-01 | 1.1 |
+--------------+------------+-------------+
以下是主要问题和示例:
1994年11月1日第二城市的税率是多少
城市2=2.0,国家1=2.5,州1=1.1
总计=5.6
我可以通过以下声明从税务局选择县和州:
SELECT TaxAuthority FROM TaxAreaAuthority
WHERE TaxAuthority LIKE 'county%'
AND TaxArea='city2';
SELECT TaxAuthority FROM TaxAreaAuthority
WHERE TaxAuthority LIKE 'state%'
AND TaxArea='city2';
这就是我被困的地方。我选择正确日期的代码已关闭,这导致它无法将正确的AuthTaxRate项添加到一起
SELECT SUM(AuthTaxRate) as 'Tax_Total' FROM TaxRates
WHERE EXTRACT(YEAR FROM Effective)='1994'
AND TaxAuthority=(
(SELECT TaxAuthority FROM TaxRates
WHERE TaxAuthority='city2'
AND EXTRACT(year FROM Effective)='1994')
OR
(SELECT TaxAuthority FROM TaxAreaAuthority
WHERE TaxAuthority LIKE 'county%'
AND TaxArea='city2')
OR
(SELECT TaxAuthority FROM TaxAreaAuthority
WHERE TaxAuthority LIKE 'state%'
AND TaxArea='city2')
)
;
它返回以下内容:
+-----------+
| Tax_Total |
+-----------+
| 11.5 |
+-----------+
但我需要它来匹配他上面给出的例子
任何帮助都将不胜感激。我很确定这都是因为我没有选择正确的日期来决定使用哪个税务机关和AuthTaxRate。再次感谢您的帮助。您想对分组最大值求和 首先,通过连接表格并对结果进行分组,找到相关的税务机关对:
SELECT TaxAuthority, MAX(Effective) Effective
FROM TaxRates JOIN TaxAreaAuthority USING (TaxAuthority)
WHERE TaxArea = 'city2' AND Effective <= '1994-11-01'
GROUP BY TaxAuthority
非常感谢你。。。这正是我想要的,但我就是无法在脑海中正确地组织它!
SELECT SUM(AuthTaxRate)
FROM TaxRates NATURAL JOIN (
SELECT TaxAuthority, MAX(Effective) Effective
FROM TaxRates JOIN TaxAreaAuthority USING (TaxAuthority)
WHERE TaxArea = 'city2' AND Effective <= '1994-11-01'
GROUP BY TaxAuthority
) t