现在表内容如下:
type date
裤子 2015-1-12
裤子 2015-1-12
裤子 2015-1-12
衣服 2015-1-12
裤子 2015-1-11
衣服 2015-1-11
眼镜 2015-1-11
眼镜 2015-1-10
假发 2015-1-09
裤子 2015-1-08
假发 2015-1-08
假发 2015-1-08
假发 2015-1-08
假发 2015-1-01
需要用mysql语句自动筛选出最近7天,每天每个type的数量(出现一次算一次)结果应该如下:
日期 裤子数量 衣服数量 眼镜数量 假发数量
2015-1-12 3 1 0 0
2015-1-11 1 1 1 0
2015-1-10 0 0 1 0
2015-1-09 0 0 0 1
2015-1-08 1 0 0 3
讨教下mysql怎么写。谢谢高手!
type date
裤子 2015-1-12
裤子 2015-1-12
裤子 2015-1-12
衣服 2015-1-12
裤子 2015-1-11
衣服 2015-1-11
眼镜 2015-1-11
眼镜 2015-1-10
假发 2015-1-09
裤子 2015-1-08
假发 2015-1-08
假发 2015-1-08
假发 2015-1-08
假发 2015-1-01
需要用mysql语句自动筛选出最近7天,每天每个type的数量(出现一次算一次)结果应该如下:
日期 裤子数量 衣服数量 眼镜数量 假发数量
2015-1-12 3 1 0 0
2015-1-11 1 1 1 0
2015-1-10 0 0 1 0
2015-1-09 0 0 0 1
2015-1-08 1 0 0 3
讨教下mysql怎么写。谢谢高手!
解决方案
20
select date(sysdate()), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(sysdate())
union
select date(date_sub(sysdate(), interval 2 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 3 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 4 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 5 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 6 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 7 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(sysdate())
union
select date(date_sub(sysdate(), interval 2 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 3 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 4 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 5 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 6 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
union
select date(date_sub(sysdate(), interval 7 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
20
上面每个查询的条件复制错了 例如
select date(date_sub(sysdate(), interval 7 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
最后的where 应该是 where date = date(date_sub(sysdate(), interval 7 day))
前面几个都需要改一下
select date(date_sub(sysdate(), interval 7 day)), sum(case when type=”裤子” then 1 else 0 end) 裤子数量,
sum(case when type=”衣服” then 1 else 0 end) 衣服数量,
sum(case when type=”眼镜” then 1 else 0 end) 眼镜数量, sum(case when type=”假发” then 1 else 0 end) 假发数量 from table
where date = date(date_sub(sysdate(), interval 1 day))
最后的where 应该是 where date = date(date_sub(sysdate(), interval 7 day))
前面几个都需要改一下
10
select date,sum(case when type = "裤子" then 1 else 0 end) from 表 group by date; //其它的以此类推
30
select `date`, sum(if(type="裤子",1,0)) as 裤子数量, sum(if(type="衣服",1,0)) as 衣服数量, sum(if(type="眼镜",1,0)) as 眼镜数量, sum(if(type="假发",1,0)) as 假发数量 from 现在表 where `date`>curdate()-interval 7 day group by `date`
20
select date(`date`),
sum(if(type=”裤子”,1,0)) as 裤子数量,
sum(if(type=”衣服”,1,0)) as 衣服数量,
sum(if(type=”眼镜”,1,0)) as 眼镜数量,
sum(if(type=”假发”,1,0)) as 假发数量
from 现在表
where `date`>curdate()-interval 7 day
group by date(`date`)
sum(if(type=”裤子”,1,0)) as 裤子数量,
sum(if(type=”衣服”,1,0)) as 衣服数量,
sum(if(type=”眼镜”,1,0)) as 眼镜数量,
sum(if(type=”假发”,1,0)) as 假发数量
from 现在表
where `date`>curdate()-interval 7 day
group by date(`date`)