2014-04-12 69 views
0

这是我的表:Mysql的集团通过功能

Id customer email  timestamp    store_id 
1 1  [email protected] 2014-04-11 17:06:21 5416 
2 0  [email protected] 2014-04-11 15:05:23 5416 
3 1  [email protected] 2014-04-11 17:55:34 5416 
4 2  [email protected] 2014-04-11 17:55:34 5416 

和我的查询是:

SELECT *, count(*) as total FROM `tybo_orders` 
WHERE timestamp IN (SELECT max(timestamp) FROM `tybo_orders` 
GROUP BY email) AND store_id='5416' GROUP BY email 

0在customer列中的值表示访客和超过0意味着客户ID。如果customer为0,则我想通过email进行分组,其他分组由customer进行分组。这怎么可能?

+0

使用case语句适用condtions – Divya

+0

什么是你想要的输出? – wils484

回答

0

尝试像这样

SELECT *, count(*) as total 
FROM `tybo_orders` 
WHERE timestamp IN (SELECT max(timestamp) FROM `tybo_orders` GROUP BY email) 
AND 
store_id='5416' 
GROUP BY 
case when customer=0 then customer else email end 
0

,我认为这会工作:

SELECT *, count(*) as total 
FROM `tybo_orders` 
WHERE timestamp IN (SELECT max(timestamp) FROM `tybo_orders` GROUP BY email) 
AND 
store_id='5416' 
GROUP BY 
IF(customer=0,email,customer)