Mysql 从数据库中检索按分支机构列出的最畅销产品的数据
我试图在我的项目中按分支获得最畅销的产品,但我不知道我的Sql查询有什么问题 以下是我的数据库的架构: DIM_SOUS_CAT表是产品表,每个产品按分支和类别进行分类 DIM_CAT数据: DIM_分支数据 DIM\u SOUS\u CAT数据是产品 FAIT_Vent数据,即销售列表 我编写了一个sql查询,但它不起作用。以下是查询:Mysql 从数据库中检索按分支机构列出的最畅销产品的数据,mysql,sql,mysql-workbench,mysql-error-1064,Mysql,Sql,Mysql Workbench,Mysql Error 1064,我试图在我的项目中按分支获得最畅销的产品,但我不知道我的Sql查询有什么问题 以下是我的数据库的架构: DIM_SOUS_CAT表是产品表,每个产品按分支和类别进行分类 DIM_CAT数据: DIM_分支数据 DIM\u SOUS\u CAT数据是产品 FAIT_Vent数据,即销售列表 我编写了一个sql查询,但它不起作用。以下是查询: select vf.id_branche, vf.id_categorie, count(*) from vente_fact vf GROUP
select vf.id_branche, vf.id_categorie, count(*)
from vente_fact vf
GROUP by vf.id_branche, vf.id_categorie
HAVING count(*) = (
SELECT max(COUNT(*))
FROM vente_fact vf2
GROUP by vf2.id_branche, vf2.id_categorie
)
有什么建议吗 你就快到了。就问题而言,您只需要修复子查询:
- 它需要与外部查询相关联
- 不能嵌套聚合表达式,如
;这将需要额外的聚合级别-相反,您可以MAX(COUNT(*)
排序和按
限制
select
vf.id_branche,
vf.id_categorie,
count(*) no_ventes
from vente_fact vf
group by vf.id_branche, vf.id_categorie
having count(*) = (
select count(*)
from vente_fact vf2
where vf2.id_branche = vf1.id_branche
order by count(*) desc
limit 1
)
请注意,如果您运行的是MySQL 8.0,则使用窗口函数可以更高效地完成此操作:
select id_branche, id_categorie, no_ventes
from (
select
id_branche,
id_categorie,
count(*) no_ventes,
rank() over(partition by id_branche order by count(*) desc) rn
from vente_fact vf
group by id_branche, id_categorie
) t
where rn = 1
你就快到了。就问题而言,您只需要修复子查询:
- 它需要与外部查询相关联
- 不能嵌套聚合表达式,如
;这将需要额外的聚合级别-相反,您可以MAX(COUNT(*)
排序和按
限制
select
vf.id_branche,
vf.id_categorie,
count(*) no_ventes
from vente_fact vf
group by vf.id_branche, vf.id_categorie
having count(*) = (
select count(*)
from vente_fact vf2
where vf2.id_branche = vf1.id_branche
order by count(*) desc
limit 1
)
请注意,如果您运行的是MySQL 8.0,则使用窗口函数可以更高效地完成此操作:
select id_branche, id_categorie, no_ventes
from (
select
id_branche,
id_categorie,
count(*) no_ventes,
rank() over(partition by id_branche order by count(*) desc) rn
from vente_fact vf
group by id_branche, id_categorie
) t
where rn = 1
您不能嵌套聚合函数
max(COUNT(*)
是的,您是对的!但是我需要获得Branchy销售的产品的最大数量您不能嵌套聚合函数max(COUNT(*)
是的,您是对的!但我需要得到分公司销售的产品的最大数量