sql server一對多統計數量

時間 2022-02-13 13:35:09

1樓:匿名使用者

資料我這裡叫a,b,c了,跟你表1,2,3是對應的

create table a(uid int,name varchar(10))

insert into a values (1,'張一')

insert into a values (2,'張二')

create table b (uid int,type1 varchar(1))

insert into b values (1,'a')

insert into b values (1,'b')

insert into b values (1,'c')

insert into b values (2,'b')

insert into b values (2,'c')

create table c(uid int,type2 varchar(1))

insert into c values (1,'a')

insert into c values (2,'b')

insert into c values (2,'c')

執行select t1.uid,t2.c1,t3.c2 from a t1

left join

(select uid,count(*) c1 from b group by uid) t2 on t1.uid=t2.uid

left join

(select uid,count(*) c2 from c group by uid) t3 on t1.uid=t3.uid結果

2樓:匿名使用者

--樓主這個分組就可以了

--有什麼問題可以隨時找我 希望採納

select tb2.uid,count(distinct type1) type1,count(distinct type2) type2

from tb1 join tb2 on tb1.id=tb2.uid

join tb3 on tb1.id=tb3.uidgroup by tb2.uid

sqlserver怎麼實現同一個表中多個count查詢並且分組並且統計總數

sql server多個表統計查詢

3樓:

sql 語句啊 連起來 where 連起來

sql語句統計數量 統計一個欄位出現的數量

4樓:匿名使用者

1、建立測試表,62616964757a686964616fe78988e69d8331333431373863

create table test_stu(id number,  u_name varchar2(20), subject varchar2(20));

create table test_subj(id number,  subject varchar2(20));

2、插入測試資料

insert into test_stu values(1,'張三','英語');

insert into test_stu values(2,'李四','德語');

insert into test_stu values(3,'王五','日語');

insert into test_stu values(4,'小明','英語');

insert into test_stu values(5,'小狗','法語');

insert into test_subj values(1,'英語');

insert into test_subj values(2,'德語');

insert into test_subj values(3,'日語');

insert into test_subj values(4,'法語');

3、查詢表中所有記錄數,select t.*, rowid from test_subj t,

4、編寫sql,統計test_subj總記錄數,及每個科目選修學生數;

select count(distinct t.id) as "小計",

count(case when subject='英語' then 1 end) as "英語",

count(case when subject='德語' then 1 end) as "德語",

count(case when subject='日語' then 1 end) as "日語"

from (select t.*

from test_subj t, test_stu b

where t.subject = b.subject) t

5樓:匿名使用者

sqlserver為例

建立表及插入資料

create table 姓名錶

(id int,

u_name varchar(10),

subject varchar(10))

create table 科目表

(id int,

s_name varchar(10))

insert into 姓名錶 values (1,'張三','英語

62616964757a686964616fe59b9ee7ad9431333337373562')

insert into 姓名錶 values (2,'李四','德語')

insert into 姓名錶 values (3,'王五','日語')

insert into 姓名錶 values (4,'小明','英語')

insert into 姓名錶 values (5,'小狗','法語')

insert into 科目表 values (1,'英語')

insert into 科目表 values(2,'德語')

insert into 科目表 values(3,'日語')

insert into 科目表 values(4,'法語')

然後需要建立一個檢視

create view v_subject

asselect a.s_name,sum(case when a.s_name=b.subject then 1 else 0 end) counts

from 科目表 a left join 姓名錶 b on a.s_name=b.subject

group by a.s_name

執行語句

declare @sql varchar(4000)

set @sql = 'select sum(counts) as 合計'

select @sql = @sql + ',sum(isnull(case [s_name] when '''+[s_name]+''' then [counts] end,0)) as

['+[s_name]+']'

from (select distinct [s_name] from v_subject) as a

select @sql = @sql+' from [v_subject]'

exec (@sql)

結果截圖

你結果裡為什麼會少呢?

這個主要是動態顯示才這麼複雜,比如你在科目表裡再加個阿拉伯語,用這個也沒問題,否則用case when的寫法會比較有侷限性

6樓:2一瞬間

select subject,count(subject) from 姓名錶 group by subject order by id

sql語句統計數量,統計一個欄位的值的數量

7樓:匿名使用者

select type,count(1) from table group by type

union all

select level,count(1) from table group by level

sql server 2005 查詢並統計前10名數量最多的使用者

8樓:匿名使用者

例表tab_test ,數量列名:sl

select top 10 * from tab_test order by d desc

語句執行,先將結果集按 sl 的降序 排序,然後使用 top 10 選擇前10行資料。

如果單一使用者有多條記錄,那需要將使用者分組,計算數量例表tab_test ,數量列名:sl,使用者列名: userselect top 10 user,sum(sl) as 'sl_xj' from tab_test

group by user order by sl_xj desc

9樓:匿名使用者

考慮到效率期間,需要算後重新order by一下select top 10 欄位2

from (select 欄位2, sum(欄位3) as 欄位4from tab group by 欄位2) torder by 欄位4 desc

10樓:陽光碎片

select top(10)* from table order by qty desc

11樓:匿名使用者

我幫樓上的sql語句改動一下,你再試試:

select top 10 欄位2,欄位4from (select 欄位2, sum(欄位3) as 欄位4from tab group by 欄位2 ) torder by 欄位4 desc

SQL統計數量,sql語句統計數量,統計一個欄位的值的數量

表a和表b分開來統計,最後合併兩個統計結果 時間在一個範圍內用 時間a between 時間1 and 時間2 由於不是很明白你的分組統計原則,所以group by語句暫時無法提供建議 肯定是一樣的,因為count 欄位 不是說這個欄位又多少個,而是記錄的條數,即行數,他和count 效果是一樣的。...

rs232一對多通訊求大神,RS232一對多通訊。求大神。。

你好!這樣的情況,是在有其他電路控制的情況下實現的,撥碼開關起到2個作用 作用1 控制裝置的 id 作用2 應該是有模擬開關完成了232通道的切換 電子自控設計店鋪 一對多的話要有想應得通訊協議的,比如工業上常用的modbus協議就是一對多的,可以是rs232或者是485的。撥碼開關是設定從機地址的...

hibernate複合主鍵一對多怎麼關聯

愛槍就要打槍 你可以進行反向生成,看看生成的配置檔案裡怎麼寫的 hibernate 中多對一對映 一的為複合主鍵 給你個示例 你根據你的類及表來改下就行 在多的一方,即class一方寫 在一的一方,即teacher一方寫 hibernate如何查詢多表和複合主鍵的資料? 好吧,其實是這樣的。hql語...