我在数据库上测试此查询时遇到问题。该查询使用了5个表格:table_1,table_2等。我想要做的是从table_1中获得死亡总数,并从table_5中获得一个出生总和。我希望通过table_4中的一个名为AnimalGroup的属性将这些总和分组,但是当我这样做时,总和就会增加一倍。我也想检查哪些数额更高。我已经加入了表格。我现在拥有的东西:在2个表中使用2个数据,同时也使用另一个表中的数据组
SELECT t4.AnimalGroup, SUM(t1.Amount * t3.DeathRate), SUM(t5.Amount * t3.LiveRate)
FROM Table_1 t1, Table_2 t2, Table_3 t3, Table_4 t4, Table_5 t5
WHERE t1.t2ID = t2.t2ID
AND t2.t2ID = t3.t2ID
AND t3.t4ID = t4.t4ID
AND t4.t4ID = t5.t4ID
GROUP BY t4.AnimalGroup
HAVING SUM(t1.Amount * t3.DeathRate) > SUM(t5.Amount * t3.LiveRate)
死亡总数从开始就没有加倍,但是直到增加了更多记录。现场总额从一开始就翻了一番。我尝试了很多东西,但我找不到解决方案;我想我需要某种子查询,但我不知道在哪里。如果他们停止加倍,我应该有我需要的。我也希望看到这两个数字。下面是我得到现在的数据:
AnimalGroup|SUMDeath|SUMLive
---------------------------------
Birds |48.6 |50.7
Cats |30 |28
Insects |50 |20
---------------------------------
我想是这样的:
AnimalGroup|SUMDeath|SUMLive
---------------------------------
Birds |24.3 |25.35
Cats |15 |14
Insects |25 |10
---------------------------------
Create table table_1 (
t1ID integer,
t2ID integer,
Amount decimal(10, 4),
Constraint pk_t1
primary key (t1ID),
Constraint fk_t1
primary key (t2ID)
references table_2(t2ID)
);go
Create table table_2 (
t2ID integer,
Constraint pk_t2
primary key (t2ID)
);go
Create table table_3 (
t2ID integer,
t4ID integer,
Name varchar(30),
Deathrate decimal(10, 4),
Liverate decimal(10,4),
Constraint pk_t3
primary key (t2ID, t4ID),
Constraint fk_t3_t2
foreign key(t2ID)
references table_2(t2ID),
Constraint fk_t3_t4
foreign key(t4ID)
references table_4(t4ID)
);go
Create table table_4 (
t4ID integer,
AnimalGroup varchar(30),
Constraint pk_t4
primary key (t4ID)
);go
Create table table_5 (
t5ID integer,
t4ID integer,
Constraint pk_t5
primary key(t5ID),
Constraint pk_t5_t4
foreign key (t4ID)
references table_4(t4ID)
);go
编辑:一些示例数据,并创建脚本添加。查询已更改。
无法理解问题。查询如何表现意外?你能展示一些样本数据和预期的输出吗? – Utsav
当然,给我一分钟。 –
是的,没有一些款项仍然加倍。 –