繁体   English   中英

如何编写sql查询组?

[英]How write sql query group by?

我有一个 ERD。 但是我想写一个sql查询。 意思是可以选择按artdept分组的regroupid 11的artgrp的所有列。

我有这个:

Select *
From artgrp
Where regroudid = "11"
Group by artdept;

我的问题是:我该怎么写:通过artdept的列选择artgrp组的所有列?

这是我的模型

在此处输入图片说明

分组依据用于识别数据集群中的计数、最大值、最小值、平均值等。 更清楚地说,例如您有包含制造、颜色、价格字段的 Cars 表。 并且您想查看不同颜色的汽车数量(这将是不同颜色的集群),您可以使用以下查询

按颜色从汽车组中选择计数(1),颜色;
输出将如下所示
蓝3
灰色 17
红5

注意:您在 group by 中使用的任何列也将在选择列中使用。 在上面的例子中,如果添加更多字段,我使用颜色分组,例如 make 它将有两个 cluster(color,make) 输出将是

福特蓝 3
福特灰色 7
本田红5
本田灰色 10

因此,您可以在对数据(如计数、最小值、最大值、平均值、排名等)进行分组之前确定需要执行的函数。如果您想要选择子句中的所有字段,则必须使用分析函数。 使用示例数据和预期输出编辑您的问题,如果需要,我也可以通过分析查询为您提供答案。

感谢您编辑您的问题示例数据会更清楚,但我仍然会继续我的理解。 我在这里使用分析函数作为解决方案

Select artgrpid,description,descid,relgroupid,
artdeptid,default,name,brand,questions,
ROW_NUMBER() over (Prtition by artdeptid order by artdeptid) from 
artgrp;

您可以使用 rank() 或 count(1) 等代替 ROW_NUMBER()。

SELECT d.description, d.lifetime, d.name, COUNT(d.artdeptid) as Departments
FROM artgrp g INNER JOIN arddept d ON g.artdeptid = d.artdeptid
WHERE regroudid = "11"
GROUP BY d.description, d.lifetime, d.name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM