sqlgroup
⑴ sql中GROUP BY的用法
GROUP
BY
是分組查詢,
一般
GROUP
BY
是和
聚合函數配合使用,你可以想想
你用了GROUP
BY
按
ITEM.ITEMNUM
這個欄位分組,那其他欄位內容不同,變成一對多又改如何顯示呢,比如下面所示
A
B
1
abc
1
bcd
1
asdfg
select
A,B
from
table
group
by
A
你說這樣查出來是什麼結果,
A
B
abc
1
bcd
asdfg
右邊3條如何變成一條,所以需要用到聚合函數,比如
select
A,count(B)
數量
from
table
group
by
A
這樣的結果就是
A
數量
1
3
group
by
有一個原則,就是
select
後面的所有列中,沒有使用聚合函數的列,必須出現在
group
by
後面
⑵ SQL中Group By 用法是什麼
GROUP BY 是分組查詢, 一般 GROUP BY 是和 聚合函數配合使用,你可以想想
你用了GROUP BY 按 ITEM.ITEMNUM 這個欄位分組,那其他欄位內容不同,變成一對多又改如何顯示呢,比如下面所示
A B
1 abc
1 bcd
1 asdfg
select A,B from table group by A
你說這樣查出來是什麼結果,
A B
abc
1 bcd
asdfg
右邊3條如何變成一條,所以需要用到聚合函數,比如
select A,count(B) 數量 from table group by A
這樣的結果就是
A 數量
1 3
group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函數的列,必須出現在 group by 後面
⑶ SQL語句中group by能否自定義分組
use Tempdb
go
--> -->
declare @T table([姓名] nvarchar(1),[年齡] int,[工資] int)
Insert @T
select N'一',40,'5000' union all
select N'二',39,'4500' union all
select N'三',39,'4700' union all
select N'四',38,'4600' union all
select N'五',35,'4200' union all
select N'六',33,'4100' union all
select N'七',33,'4000'
Select [年齡]=case when [年齡] between 30 and 35 then '33~35' when [年齡] between 36 and 40 then '36~40' end,
[工資]=sum([工資])
from @T group by case when [年齡] between 30 and 35 then '33~35' when [年齡] between 36 and 40 then '36~40' end
(7 個資料列受到影響)
年齡 工資
----- -----------
33~35 12300
36~40 18800
(2 個資料列受到影響)
⑷ sql:group by
你用多個group by 不就行了,首先一個一個語句寫 不要想著一下就完成它,比如第一條語句就根據1分組就行了,一次類推。 求和使用聚合函數sum()就行了 ,把思路弄清,慢慢寫 就行了
⑸ sql中group by 是什麼意思啊請教謝謝
group
by
分組
通用資料庫具有基於表的特定列對數據進行分析的能力。
可按照在
GROUP
BY
子句中定義的組對行進行分組。以其最簡單的形式,組由稱為分組列的列組成。
SELECT
子句中的列名必須為分組列或列函數。列函數對於
GROUP
BY
子句定義的每個組各返回一個結果。下列示例產生一個列出每個部門編號的最高薪水的結果:
SELECT
DEPT,
MAX(SALARY)
AS
MAXIMUM
FROM
STAFF
GROUP
BY
DEPT
此語句產生下列結果:
DEPT
MAXIMUM
------
---------
10
22959.20
15
20659.80
20
18357.50
38
18006.00
42
18352.80
51
21150.00
66
21000.00
84
19818.00
注意:計算的是每個部門(由
GROUP
BY
子句定義的組)而不是整個公司的
MAX(SALARY)。
將
WHERE
子句與
GROUP
BY
子句一起使用
分組查詢可以在形成組和計算列函數之前具有消除非限定行的標准
WHERE
子句。必須在GROUP
BY
子句之前指定
WHERE
子句。例如:
SELECT
WORKDEPT,
EDLEVEL,
MAX(SALARY)
AS
MAXIMUM
FROM
EMPLOYEE
WHERE
HIREDATE
>
'1979-01-01'
GROUP
BY
WORKDEPT,
EDLEVEL
ORDER
BY
WORKDEPT,
EDLEVEL
結果為:
WORKDEPT
EDLEVEL
MAXIMUM
--------
-------
-----------
D11
17
18270.00
D21
15
27380.00
D21
16
36170.00
D21
17
28760.00
E11
12
15340.00
E21
14
26150.00
注意:在
SELECT
語句中指定的每個列名也在
GROUP
BY
子句中提到。未在這兩個地方提到的列名將產生錯誤。GROUP
BY
子句對
WORKDEPT
和
EDLEVEL
的每個唯一組合各返回一行。
在
GROUP
BY
子句之後使用
HAVING
子句
可應用限定條件進行分組,以便系統僅對滿足條件的組返回結果。為此,在GROUP
BY
子句後麵包含一個
HAVING
子句。
HAVING
子句可包含一個或多個用
AND
和
OR
連接的謂詞。每個謂詞將組特性(如
AVG(SALARY))與下列之一進行比較:
該組的另一個特性
例如:
HAVING
AVG(SALARY)
>
2
*
MIN(SALARY)
常數
例如:
HAVING
AVG(SALARY)
>
20000
例如,下列查詢尋找雇員數超過
4
的部門的最高和最低薪水:
SELECT
WORKDEPT,
MAX(SALARY)
AS
MAXIMUM,
MIN(SALARY)
AS
MINIMUM
FROM
EMPLOYEE
GROUP
BY
WORKDEPT
HAVING
COUNT(*)
>
4
ORDER
BY
WORKDEPT
此語句產生下列結果:
WORKDEPT
MAXIMUM
MINIMUM
--------
-----------
-----------
D11
32250.00
18270.00
D21
36170.00
17250.00
E11
29750.00
15340.00
有可能(雖然很少見)查詢有
HAVING
子句但沒有
GROUP
BY
子句。在此情況下,DB2
將整個表看作一個組。因為該表被看作是單個組,所以最多可以有一個結果行。如果
HAVING
條件對整個表為真,則返回選擇的結果(該結果必須整個由列函數組成);否則不返回任何行。
⑹ sql group by用法
1. select top 1 姓名,sum(分數) as 分數總和 from 表名 group by 姓名
order by 分數總和 desc
2. select 姓名 from 表名 group by 姓名 having min(分數)>90
測試通過
⑺ sql group by
加上顯示的列,不加上avg/max聚合結果
select id_a,data_a,b.name_b,c.name_c,c.type_c from table_a a
left join (select id_b,data_b,name_b from table_b) b on a.id_a =b.id_b
left join (select id_c,data_c,type_c from table_c) c on a.id_a=c.id_c
group by id_a,data_a,b.name_b,c.name_c,c.type_c
⑻ SQL中如何GROUP BY 所有的表中信息。
group by 的用法是:你 select 哪個欄位,就要 group by 哪個欄位
⑼ sql里group by怎麼用
SQL GROUP BY 語句
----------
合計函數 (比如 SUM) 常常需要添加 GROUP BY 語句。
----------
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
語法
SELECTcolumn_name,aggregate_function(column_name)
FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name
⑽ SQL group by 問題
GROUP BY 子句
將記錄與指定欄位中的相等值組合成單一記錄。如果使 SQL 合計函數,例如 Sum或Count,蘊含於 SELECT 語句中,會創建一個各記錄的總計值。
語法
SELECT 欄位表
FROM 表
WHERE標准
[GROUP BY 分組欄位表]
包含 GROUP BY 子句的 SELECT 語句具有以下幾個部分:
部分 說明
fieldlist 要和任何欄位名別名, SQL 合計函數, 選擇斷定 (ALL, DISTINCT, DISTINCTROW, 或 TOP),或其他 SELECT 語句 選擇一起檢索的欄位名稱。
table 從其中獲取記錄的表的名稱。欲知更多信息請看 FROM 子句.
criteria 選擇准則。如果此語句包含一個 WHERE 子句, Microsoft Jet 資料庫引擎 會在記錄上應用WHERE條件,然後把值分組。
groupfieldlist 用來對記錄分組的欄位名,最多有 10 個欄位。在 groupfieldlist 中欄位名的順序將決定組層次,由最高至最低的層次來分組。
說明
GROUP BY 是可選的。
如果在 SELECT 語句中沒有 SQL 合計函數,則可省略總計值。
Null值在 GROUP BY欄位中,則會被分組而不被省略。但是在任何 SQL 合計函數中不計算 Null 值。
使用 WHERE 子句可以排除您不想分組的行,而將記錄分組後,用 HAVING 子句過濾這些記錄。
除非包含備注數據或 OLE 對象數據,否則, GROUP BY 欄位列表中的欄位可引用 FROM 子句中的任何錶的任何欄位,即使 SELECT 語句不包含此欄位,只要它至少包含一個 SQL 合計函數即可。Microsoft® Jet 資料庫引擎無法在「備注對象」或「OLE 對象」欄位上進行分組。
SELECT 欄位列表中的全部欄位必須包含在 GROUP BY 子句中,或在 SQL 合計函數中作為參數。