Code Bye

mysql筛选出最近7天每天的内容按照降序排列

现在表内容如下:
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))

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))
前面几个都需要改一下

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`)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql筛选出最近7天每天的内容按照降序排列