簡體   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