1. sql中,按照某個欄位的內容進行分組,並在組內加序號
sqlserver2005及以上版本
SELECT
ROW_NUMBER()
OVER(PARTITION
BY
種類
ORDER
BY
種類)
AS
序號,*
FROM
表
2. sql語句實現分組統計
方法和詳細的操作步驟如下:
1、第一步,創建一個測試表,詳細代碼見下圖,轉到下面的步驟。
3. sql 分組 編號
如果有主鍵列,假設主鍵為ID:
select 列名,nid = (select count(1) from 表名 where 列名= a.列名 and id <= a.id)
from 表名 a
如果沒有主鍵列,必須造一個:
select identity(int,1,1) as id ,* into # from 表名
select 列名,nid = (select count(1) from # where 列名= a.列名 and id <= a.id)
from # a
SQL SERVER 2005及以後的版本,可以用roy_88的語法
4. sql查詢分組怎麼做
select user_id
,sum(case when trade_type='4' then amount else 0 end) as trade_type4
,sum(case when trade_type='5' then amount else 0 end) as trade_type5
,sum(case when trade_type='11' then amount else 0 end) as trade_type11
,sum(case when trade_type='12' then amount else 0 end) as trade_type12
from tab_name
group by user_id
5. 資料庫中如何分類、分組並總計SQL數據
通常,我們確實需要對所有數據進行排序。SQL的ORDER BY子句將數據按字母或數字順序進行排列。因此,同類數據明顯分類到各個組中。然而,這些組只是分類的結果,它們並不是真正的組。ORDER BY顯示每一個記錄,而一個組可能代表多個記錄。 2、減少組中的相似數據 分類與分組的最大不同在於:分類數據顯示(任何限定標准內的)所有記錄,而分組數據不顯示這些記錄。GROUP BY子句減少一個記錄中的相似數據。例如,GROUP BY能夠從重復那些值的源文件中返回一個唯一的郵政編碼列表: SELECTZIP FROMCustomers GROUPBYZIP 僅包括那些在GROUP BY和SELECT列列表中字義組的列。換句話說,SELECT列表必須與GROUP列表相匹配。只有一種情況例外:SELECT列表能夠包含聚合函數。(而GROUP BY不支持聚合函數。) 記住,GROUP BY不會對作為結果產生的組分類。要對組按字母或數字順序排序,增加一個ORDER BY子句(#1)。另外,在GROUP BY子句中您不能引用一個有別名的域。組列必須在根本數據中,但它們不必出現在結果中。 3、分組前限定數據 您可以增加一個WHERE子句限定由GROUP BY分組的數據。例如,下面的語句僅返回肯塔基地區顧客的郵政編碼列表。 SELECTZIP FROMCustomers WHEREState='KY' GROUPBYZIP 在GROUP BY子句求數據的值之前,WHERE對數據進行過濾,記住這一點很重要。
6. sql2005中如何使用sql語句添加標志列
假設有個excel表中的數據要插入到sql
表tablename,有兩列,第一列uid
,int型,第二列
username,
nvarchar(100)型
步驟:
1.
在
excel
中用公式生成insert語句,假設數據在a和b列,
在c列輸入如下公式
="insert
into
tablename(uid,username)
values("
&
a2
&
",n'"
&
b2
&"')"
往下拉,使得每行都生成一條insert語句
2.
復制這些insert
語句到
ssms中,執行即可。
7. SQL 分組數據
連載的上一篇文章,我們講到通過 SQL 聚合函數可以匯總數據,比如對行進行計數,計算和與平均數,獲取最大值和最小值。
但目前為止,我們的匯總都是正對所有行或匹配 WHERE 子句的數據上進行的。比如返回供應商 DLL01 提供的產品數目:
運行結果:
那如果我們想要返回每個供應商提供的產品數目呢?這就需要用到分組聚合了。使用分組可以將數據分為多個邏輯組,然後對每個組進行聚合計算。
分組的創建使用 SELECT 語句中的 GROUP BY 子句,比如下面的 SQL 返回每個供應商提供的產品數目:
運行結果:
上述 SELECT 語句返回兩個列, vend_id 為供應商 ID,是分組欄位; num_prods 為計算欄位,使用 count(*) 聚合而來。 GROUP BY 子句告訴 DBMS 按 vend_id 排序並分組數據,然後對每個分組而不是整個數據集進行聚合。
除了使用 GROUP BY 分組數據外, SQL 還允許過濾分組,規定包含哪些分組,排除哪些分組。比如,我們只想列出供應產品數目在 2 種以上的供應商及其供應產品的數目。
這里有個過濾條件: 供應產品數目大於 2 ,條件中的 供應產品數目 是針對分組後進行聚合產生的計算欄位,因此無法使用 WHERE 子句。 WHERE 子句過濾時指定的是行,而不是分組。
為此, SQL 提供了 HAVING 子句來過濾分組,並且 HAVING 支持所有 WHERE 操作符。下面,我們來完成供應產品數目在 2 種以上的供應商及其供應產品的數目。
運行結果:
跟前面的結果相比,供應產品數目等於 2 的供應商信息就不見啦~
關於 WHERE 子句和 HAVING 子句的區別,我們可以再通過一個案例理解一下。下面的 SQL 檢索具有兩個或以上產品且其價格大於等於 4 的供應商。
其中產品表如下:
SQL 語句如下:
運行結果:
截止目前,我們已經學了不少的 SELECT 子句,下面小魚針對目前我們已經學習的 SELECT 子句來總結一下他們在 SELECT 語句中的先後順序。
表中子句的排列順序即為它們在 SELECT 語句中依次出現的次序:
還是上面的例子,檢索具有兩個或以上產品且其價格大於等於 4 的供應商和其供應的產品數目,不過檢索檢索需要按照產品數目升序排列。
運行結果:
本節,我們學習了使用 GROUP BY 子句對多組數據進行匯總計算,並返回每個分組的結果。並實踐了如何使用 HAVING 子句過濾分組。
8. SQL 如何給各自分組添加序號
select姓名,日期,row_number()over(partitionby姓名orderby日期)fromtable
oracle的寫法,SQL server好像不支持。
9. sql2005中如何使用sql語句添加標志列
alter table t1 drop column id alter table t1 add id int identity(1,1) 就是把原來的那個列刪除了。再寫了個有標識列的。