Mysql 解决 分组统计问题

时间:2022-01-09 09:42:23

 

 我有四张表A、B、C、D,    
  --------------------------------     
  A      | B  | C   | D    
  a   b   |   a   c   |   a   d   |   d   e    
  1   1   |   1   1   |   1   A   |   A   1    
  2   2   |   1   3   |   2   B   |   B   2    
  3   4   |   1   4   |   3   C   |   C   3    
  4   6   |   2   1   |   4   D   |   D   4    
  --------------------------------    
  现在要用一条sql语句将A表所有的列,B表对与A表a字段    
  相关联的列求count,通过C表,将D表与A表关联起来,得到    
  结果    
  1   1   3   1    
  2   2   1   2    
  3   4   0   3    
  4   6   0   4  

Mysql语句解决:

Mysql 解决 分组统计问题select  A.a,A.b,IFNULL(c, 0 as  c,D.a 
Mysql 解决 分组统计问题
from  ( select   1   as  a, 2   as  b  union   all
Mysql 解决 分组统计问题
select   2   as  a, 2   as  b  union   all
Mysql 解决 分组统计问题
select   3   as  a, 4   as  b  union   all
Mysql 解决 分组统计问题
select   4   as  a, 6   as  b)  as  A 
Mysql 解决 分组统计问题
left   outer   join      
Mysql 解决 分组统计问题 (
select  a, count (a)  as  c  from (
Mysql 解决 分组统计问题
select   1   as  a, 3   as  c  union   all
Mysql 解决 分组统计问题
select   1   as  a, 3   as  c  union   all
Mysql 解决 分组统计问题
select   1   as  a, 3   as  c  union   all
Mysql 解决 分组统计问题
select   2   as  a, 3   as  c ) B  group   by  a)  as  B
Mysql 解决 分组统计问题
on  A.a = B.a 
Mysql 解决 分组统计问题
join  
Mysql 解决 分组统计问题 (
select   1   as  a, ' A '   as  d  union   all
Mysql 解决 分组统计问题
select   2   as  a, ' B '   as  d  union   all
Mysql 解决 分组统计问题
select   3   as  a, ' C '   as  d  union   all
Mysql 解决 分组统计问题
select   4   as  a, ' D '   as  d )  as  C 
Mysql 解决 分组统计问题
on  A.a = C.a 
Mysql 解决 分组统计问题
join ( select   1   as  a, ' A '   as  d  union   all
Mysql 解决 分组统计问题
select   2   as  a, ' B '   as  d  union   all
Mysql 解决 分组统计问题
select   3   as  a, ' C '   as  d  union   all
Mysql 解决 分组统计问题
select   4   as  a, ' D '   as  d )  as  D
Mysql 解决 分组统计问题
on  D.d = C.d
Mysql 解决 分组统计问题
Mysql 解决 分组统计问题
Mysql 解决 分组统计问题