當前位置:首頁 » 編程語言 » sql按照欄位分類
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql按照欄位分類

發布時間: 2022-12-23 06:52:45

㈠ 寫一句sql,來按照把表T按照B的欄位長度來分類統計。

CreateTableT
(
Aint,
BVarchar(10)
)

insertintoTvalues(1,'aa')
insertintoTvalues(2,'ab')
insertintoTvalues(3,'abc')
insertintoTvalues(4,'abcde')
insertintoTvalues(5,'abcde')

--這個統計1到B(最大長度)之間的每個長度的個數(如圖)
WithCT
As
(
SelectMAX(LEN(B))AsLengFromT
unionAll
SelectLeng-1fromCTWhereLeng>1
)
SelectLeng,SUM(CAseWhenBisnullThen0Else1End)AsCntFrom
(
SelectA.Leng,T.BFromCTALeftJoinTonA.Leng=Len(T.B)
)SGroupByLeng

--這個簡化版,統計B不同長度的個數
SelectLEN(B)AsLeng,COUNT(*)AsCntFromT
GroupbyLEN(B)

㈡ 求SQL語句根據欄位分組

首先,使用下面語句:
select date, count(date) cnt from user where date is not null group by date
結果:
date cnt
1月 2
2月 2
3月 1

在上面語句基礎上改進,使之與要求結果一致:
select max(case when date = '1月' then cnt else 0 end ) 1月,
max(case when date = '2月' then cnt else 0 end ) 2月,
max(case when date = '3月' then cnt else 0 end ) 3月
from (select date, count(date) cnt from user where date is not null group by date)

㈢ SQL如何查詢一張表的所有欄位並按其中一個欄位進行分組

1、創建測試表,

create table test_group_cols(id number, value varchar2(20), remark varchar2(20));

㈣ 何對SQL一個欄位中的信息進行分類統計匯總

你這欄位寫的有點亂,看不太明白。

這表名和列名都沒貼出來,不知道該怎麼幫你寫

你要求合匯總的欄位名叫什麼啊?這里我按「時間」來吧

之後你把時間改成你那列名就行。

select sum(時間) from 表名 where 列名 ='C620';

或者

select 列名1,sum(時間) from 表名 where 列名1 in (C620,Z35,......) group by 列名1;

那列名1就是C620所在的列,你想對幾個值匯總,就在()里加幾個就行。

㈤ sql里查詢一個欄位里的記錄的多個類的匯總(幾個欄位按不同分類的匯總)

--技術要點:行轉列
--以下提供SQL SERVER語句

--創建測試環境
create table tab
(
machine int,
sernum varchar(10),
area varchar(2),
PF varchar(1)
)
--製造數據
insert into tab select 462,'16205R3E','AT','P'
insert into tab select 462,'16203H0N','AT','F'
insert into tab select 316,'1620A7WP','AT','S'
insert into tab select 316,'16206CCC','AT','S'

--1. 靜態行轉列(所謂靜態,是指的PF列只有P,F,S這三個值,或者值是固定的某幾個值)
select machine,
max(case pf when 'P' then num else 0 end) as P,
max(case pf when 'F' then num else 0 end) as F,
max(case pf when 'S' then num else 0 end) as S
from
(select machine,pf,count(1) as num from tab group by machine,pf
)tb
group by machine

/* 結果集
machine P F S
----------- ----------- ----------- -----------
316 0 0 2
462 1 1 0

(2 row(s) affected)
*/

--2. 動態行轉列(相對於靜態的概念)
declare @sql varchar(8000)
set @sql = 'select machine as ' + 'machine'
select @sql = @sql + ' , max(case pf when ''' + pf + ''' then num else 0 end) [' + pf + ']'
from (select distinct pf from tab) as a
set @sql = @sql + ' from (select machine,pf,count(1) as num from tab group by machine,pf
)tb group by machine'
exec(@sql)

/* 結果集
machine F P S
----------- ----------- ----------- -----------
316 0 0 2
462 1 1 0

(2 row(s) affected)
*/

--刪除環境
drop table tab

㈥ sql中根據表中一個欄位分組如何分別統計每個分組的記錄數

分組統計可以參考以下操作:

當數組重復的時候分組才有意義,因為一個人也可以分為一組,只是沒有意義而已,分組採用GROUP BY語句完成,語法如下:

㈦ SQL 單表查詢按欄位分類統計如何橫排顯示

嵌入寫:即簡單,又易懂
select name ,
case type when '白班' then '1' else '' end as dayjob ,
case type when '夜班' then '1' else '' end as nightjob
from work
把上面這句做為整體,嵌入到下面。
select a.name ,count(a.dayjob),count(a.nightjob) from
(
select name ,
case type when '白班' then '1' else '' end as dayjob ,
case type when '夜班' then '1' else '' end as nightjob
from work
) as a group by a.name

括弧裡面就是一個子查詢,這樣就可以達到你的要求。

㈧ SQL 中如何根據只根據第一個欄位分組

使用分析函數row_number() over (partiion by ... order by ...)來進行分組編號,然後取分組標號值為1的記錄即可。目前主流的資料庫都有支持分析函數,很好用。
其中,partition by 是指定按哪些欄位進行分組,這些欄位值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。
示例(SQL Server 2005或以上適用):

123456
select s.* from ( select *, row_number() over (partition by [手機號] order by [店鋪]) as group_idx from table_name) swhere s.group_idx = 1

㈨ AB兩個欄位,怎麼寫sql生成C欄位,使裡面的數根據B欄位分類,根據A欄位排序寫1234.。

樓主好,樓主所需要的功能是分組後組內排序功能吧?你可以使用SQL的分析函數和開窗函數,很簡單就可以實現:
select *,row_number() over (partition by B order by A) as c from table
上述SQL即可滿足樓主。row_number()函數是生成序列碼,然後進行開窗,開窗指的是一個范圍內進行計算,即over開窗函數,中間寫的partition by 是按照什麼粒度進行分組,order by則是按照什麼排序計算,整合起來就是排序在前面的會先生成序列碼,一個組內進行生成即可。

㈩ sql中,按照某個欄位的內容進行分組,並在組內加序號

sqlserver2005及以上版本
SELECT
ROW_NUMBER()
OVER(PARTITION
BY
種類
ORDER
BY
種類)
AS
序號,*
FROM