2014-10-30 37 views
0

我做了以下查询:Mysql的计算按组发生的列值

select ba_brand, ceil(sum((sk_front + sk_depth + sk_warehouse + (sk_exhibition IS NOT NULL)))/count(distinct(vi_pdv_id_pdv))) as 'inventory', 
count(vi_pdv_id_pdv) 
from sf_visit_stock 

join sf_visit on sk_vi_id_visit = id_visit 
join sf_pdv on vi_pdv_id_pdv = id_pdv 
join sf_format on pdv_fo_id_format = id_format 
join sf_group on fo_gr_id_group = id_group 
join sf_channel on gr_ch_id_channel = id_channel 

join sf_product on sk_pd_id_product = id_product 
join sf_family on pd_fa_id_family = id_family 
join sf_brand on fa_ba_id_brand = id_brand 

where (CASE WHEN from_unixtime(vi_scheduled_start,'%Y-%m-%d') between '2014-10-01' and '2014-10-31' AND vi_vs_id_visit_status in (1,2,3,4,6) THEN 4 END) 
and vi_pr_id_proyect = 5 and ba_rival = 0 and id_brand in (72,75,76,77,78,79,80) 
and sf_channel.ch_channel not in ("CHAINS DIRECTS", "CHAINS INDIRECTS", "INDEPENDENTS", "SUPERMARKET") 

group by ba_brand 

换句话说,我做了一些值的sum()

sum((sk_front + sk_depth + sk_warehouse + (sk_exhibition IS NOT NULL)) 

从行数:

count(vi_pdv_id_pdv) 

但是在这些行中的ID重复,所以count(vi_pdv_id_pdv)返回我VALU计算所有这些重复的ID。 我希望得到这些vi_pdv_id_pdv的值,而不会出现重复。这里举一个例子。与此查询我得到如下结果:

My Product | 32031 | 1098 

在这个例子中重复值1098个计数。我想要得到:

My Product | 32031 | 534 

该计数没有重复的值。 我了解group by声明没有重复计数像this answer我读过, 但我不能够实现查询类似的东西我展示了上面......

可有人请帮帮我??

谢谢!!!

回答