Mysql 按组计数出现次数作为列值

标签 mysql sql find-occurrences

我进行了以下查询:

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) 返回一个计算所有重复 ID 的值。 我想获取这些 vi_pdv_id_pdv 的值而不计算重复项。这是一个小例子。通过此查询,我得到以下结果:

My Product |    32031 | 1098

在此示例中,重复值的计数为 1098。我想得到:

My Product |    32031 | 534

该计数没有重复值。我知道 group by 语句可以不重复地进行计数,如 this answer 中所示我已阅读,但我无法实现与上面向您展示的查询中类似的内容。

最佳答案

关于Mysql 按组计数出现次数作为列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26664827/

相关文章:

PHP不显示数据

mysql - 体育用户竞猜系统-SQL问题

mysql - 对或错......数据库关系困惑......我需要对这些进行一些解释

php - 重复键上的 Mysql 仅当 BlahVAl < BlahRowVal 时更新表

regex - 只匹配一个模式一次

php - 从 mysql 列中搜索

mysql - 如何在mysql上显示每组的最后数据(最大数据)

mysql - 查询列值等于count MySQL

r - 计算 R 中分类变量的出现次数