我需要根据两个字段进行分组计算行数。
动物(a)
id group_id strain_id death_date death_cause status
-----------------------------------------------------------------------
1 512 164 2015-12-01 Culled P
2 512 164 2015-12-02 Culled A
3 512 164 2015-12-02 Surplus B
4 512 230 2015-12-06 Culled A
5 512 164 2015-12-28 Culled A
6 512 230 2016-01-20 Culled B
7 512 230 2016-01-20 Surplus P
8 512 164 NULL NULL P
9 512 230 NULL NULL B
10 512 230 NULL NULL A
11 512 164 2016-01-25 Culled B
12 512 164 2016-02-29 Culled A
13 512 230 2016-02-03 Surplus P
14 512 230 2016-02-03 Culled A
Groups (g)
id group_name
--------------
512 Mice
应变 (s)
id strain_name
----------------
164 Strain 1
230 Strain 2
小组动物数量 (gac)
id total_animals alive_count dead_count
----------------------------------------------------------------------
512 14 3 11
交配历史 (mh)
id animal_id history_type history_date
--------------------------------------------------------
1001 2 MA 2015-11-20
1002 2 MR 2015-12-01
1003 3 MA 2015-12-01
1004 6 FA 2015-12-21
1005 9 FA 2016-02-07
1006 10 MA 2016-01-27
1007 11 FA 2015-12-12
当我按照菌株 ID
和死因
进行分组时,它们的可视化结果如下:
菌株1 ---- 淘汰
1 512 164 2015-12-01 Culled P
2 512 164 2015-12-02 Culled A
5 512 164 2015-12-28 Culled A
11 512 164 2016-01-25 Culled B
12 512 164 2016-02-29 Culled A
应变1 ---- 剩余
3 512 164 2015-12-02 Surplus B
育种2——淘汰
4 512 230 2015-12-06 Culled A
6 512 230 2016-01-20 Culled B
14 512 230 2016-02-03 Culled A
压力2 ---- 剩余
7 512 230 2016-01-20 Surplus P
13 512 230 2016-02-03 Surplus P
我希望从SQL查询中获得以下结果:
g_name s_name d_cause a_total c_alive c_dead c_pup c_breeder c_total
------------------------------------------------------------------------------
Mice Strain 1 Culled 12 3 9 1 2 5
Mice Strain 1 Surplus 12 3 9 0 1 1
Mice Strain 2 Culled 12 3 9 0 1 3
Mice Strain 2 Surplus 12 3 9 2 0 2
基本上,我想要按照两个分类(在这种情况下为
strain_name
和death_cause
)计算动物数量。请注意,要将动物计算为育种动物(
c_breeder
),我必须查看交配历史表,并检查animal_id
是否曾经有过以下代码之一MA
或FA
。我使用
groups
,group_animal_count
和strains
进行INNER JOIN
。由于状态为P
的动物只是幼仔,不参与交配活动,因此我对mating_history
使用LEFT JOIN
。
LEFT JOIN
? - Giorgos BetsosINNER JOIN
和1个LEFT JOIN
。 - dokgu