SQL查詢語句,分類,匯總
創建測試表,插入數據
create table tast
(序號 int,
姓名 varchar(10),
電話卡號 varchar(20),
卡類型 varchar(10))
insert into tast values (1,'張三','1000000000','移動')
insert into tast values (2,'張三','1000000001','移動')
insert into tast values (2,'張三','1000000002','移動')
insert into tast values (4,'張三','1000000003','聯通')
insert into tast values (5,'張三','1000000004','聯通')
insert into tast values (6,'李四','1000000004','聯通')
insert into tast values (7,'李四','1000000005','聯通')
insert into tast values (8,'李四','1000000006','移動')
insert into tast values (9,'王麻','1000000007','移動')
insert into tast values (10,'王麻','1000000008','移動')
insert into tast values (11,'王麻','1000000010','移動')
insert into tast values (12,'王麻','1000000011','聯通')運行:
select case when a.電話卡號=b.電話卡號 then a.姓名 else '' end 姓名,a.電話卡號,a.卡類型
from tast a left join
(select 姓名,min(電話卡號) 電話卡號 from tast group by 姓名) b
on a.電話卡號=b.電話卡號 and a.姓名=b.姓名結果:
SQL語句查詢問題有三張表,結構分別是這樣的{服務名,A}{服務名,
TrySELECT t.服務名, COUNT(tab1.A),COUNT(tab2.B),COUNT(tab3.C)FROM (SELECT 服務名 FROM tab1 UNION SELECT 服務名 FROM tab2 UNION SELECT 服務名 FROM tab3) t, tab1, tab2, tab3WHERE t.服務名 = tab1.服務名AND t.服務名 = tab2.服務名AND t.服務名 = tab3.服務名 GROUP BY t.服務名 如果上面這個有問題,下面這個肯定可以,只是效率應該很惡心SELECT t.服務名, (SELECT COUNT(tab1.A) FROM tab1 WHERE t.服務名 = tab1.服務名),(SELECT COUNT(tab2.B) FROM tab2 WHERE t.服務名 = tab2.服務名),(SELECT COUNT(tab3.C) FROM tab3 WHERE t.服務名 = tab3.服務名)FROM (SELECT 服務名 FROM tab1 UNION SELECT 服務名 FROM tab2 UNION SELECT 服務名 FROM tab3) tGROUP BY t.服務名。
SQL查詢語句有哪些
查詢語句只有一種SELECT 。
FROM WHERE 。 (GROUP BY 。
ORDER BY 。)只是根據想要的結果不一樣,而查詢的內容會稍有修改。
比如FROM的表名,可以不是一張表,而是一個SELECT查詢的結果作為一張表。同樣,查詢統計分組匯總,可以增加SUM(), MIN(), MAX()等函數配合group by使用進行分組統計。
WHERE 條件除了簡單的連接之外,也有IN, NOT IN, EXISTS, NOT EXISTS等。還有,兩個SELECT集合可以使用UNION, UNION ALL, MINUS等進行集合的加或者減的操作。
總之如果是查詢,就離不開SELECT 。 FROM 。
WHERE。 這樣的基本形式。
SQL語言分為四類,每類分別是
sqlserver(T_SQL):
DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
Oracle SQL(P_SQL) 語句可以分為以下幾類:
1.數據操作語言語句[Data manipulation language,DML]
2.數據定義語言語句[Data definition language,DDL]
3.事務控制語句[transaction control statement]
4.會話控制語句[session control statement]
怎么區別SQL里的各種查詢語句
查詢語句的格式是
select 【要查詢的字段】 from 【表名】 where 【約束條件】
如果要分組 再加上 group by 【按照哪個列分組的列名】
如果要排序 再加上 order by 【按照那個列排序的列明】 asc/desc --二者選其一asc是升序,另一個是降序
例如:
select * from student where sex='男' --*代表列的所有字段
order by birthday desc
意思是 查詢 student表中的 而且性別為男的所有信息 并且按照生日的降序排列
插入語句
格式是
insert into [表名](列1,列2,列3。.) values ('列1的值,'列2','列3值'。) --注意日期類型的數據不能加單引號
例子
insert table student(name,sex,birthday) values ('小明','男',1990-01-01) --into可要可不要,數據要與列明要一一對應
更新語句
update [表名] set [列明]=更新的值 where 。. --后面也是限制語句,就是寫一個條件比如 (where name='小明')
例子
update student set sbirthday=1991-01-01 where name='小明'
意思是把名字為小明的列的 生日該為 那個日期
刪除語句
delete table [表名] where。--也是條件和上面一樣
例子
delete table student where name='小明'
意思是刪除名字為小明的列的所有數據
delete 表名 -- 即刪除指定的表
delete database 數據庫名 --即刪除指定的數據庫
SQL查詢語句結果分類合計
使用case when 或是 pivot。
select stationno,sum(case when vehtype = '1類車' then vehcount else 0 end) 一類車,
sum(case when vehtype = '2類車' then vehcount else 0 end) 二類車,
sum(case when vehtype = '3類車' then vehcount else 0 end) 三類車,
。.,
sum(vehcount) 合計
where squaddate between '20110101' and '20110131'
group by stationno order by stationno
SQL查詢語句,分類,匯總
創建測試表,插入數據 create table tast(序號 int,姓名 varchar(10),電話卡號 varchar(20),卡類型 varchar(10))insert into tast values (1,'張三','1000000000','移動')insert into tast values (2,'張三','1000000001','移動')insert into tast values (2,'張三','1000000002','移動')insert into tast values (4,'張三','1000000003','聯通')insert into tast values (5,'張三','1000000004','聯通')insert into tast values (6,'李四','1000000004','聯通')insert into tast values (7,'李四','1000000005','聯通')insert into tast values (8,'李四','1000000006','移動')insert into tast values (9,'王麻','1000000007','移動')insert into tast values (10,'王麻','1000000008','移動')insert into tast values (11,'王麻','1000000010','移動')insert into tast values (12,'王麻','1000000011','聯通')運行: select case when a.電話卡號=b.電話卡號 then a.姓名 else '' end 姓名,a.電話卡號,a.卡類型from tast a left join (select 姓名,min(電話卡號) 電話卡號 from tast group by 姓名) bon a.電話卡號=b.電話卡號 and a.姓名=b.姓名結果: 。
sql 分類匯總查詢語句
醉含笑的很牛,不過SUM(pay)有點需要改動
最終完美版:
select min(id) as 序號,
max(dept) as 部門,
sum(case when zt='01' OR zt='02' then pay else 0 end) as 合計,
sum(case zt when 01 then 1 else 0 end) as 個數01狀態,
sum(case zt when 02 then 1 else 0 end) as 個數02狀態,
count(zt) as 總數
from aac
group by dept