這是在做乙個客戶管理系統時遇到的問題,公司每年需要按銷售區域評選出購買量最大的客戶進行單獨獎勵。區域劃分使用地域編碼起止區間方式,例如,華東地區的起止編碼是
10001
~10003
,在10001
、10002
、10003
區域的客戶都隸屬於華東地區。下面是建立示例的**,
area
表中存放著區域劃分範圍,
sales
存放著每個區域中客戶的購買資訊。
create table areas
(area_name char(25) not null,
start_codeint not null,
end_codeint not null,
check(start_code <= end_code));
create table sales
(sale_id int,
cust_namechar(15),
cust_codeint,
sale_amtdecimal (8,2));
insert into areas
values ('
華東', 10001, 10003), ('
華南', 10004, 10006), ('
華北', 10007, 10009);
insert into sales
values (1, '
張三', 10001, 1000.00),
(2, '
張三', 10002, 1000.00),
(3, '
李四', 10001, 4000.00),
(4, '
王五', 10005, 1000.00),
(5, '
王五', 10006, 2000.00),
(6, '
趙六', 10004, 1500.00);
要統計出每個區域中購買量最大的客戶,我們首先想到的是使用
group by
select a.area_name, s.cust_name, sum(s.sale_amt)as sale_amt
from areas as a
join salesas s
ons.cust_code between a.start_code and a.end_code
group by a.area_name, s.cust_name
order by area_name;
表19-12
使用group by
按區域、客戶分類彙總結果
area_name
cust_name
sale_amt華東
李四4000.00華東
張三 2000.00華南
王五 3000.00華南
趙六 1500.00
從上表可以看出,在華東地區李四的購買量最大,華南地區王五的購買量最大。如果僅統計每地區的最大銷售額,不考慮客戶名稱,完全可以在上表的基礎上使用類似下面的語句:
select area_name, max(sale_amt)
from [
表19-21]
group by area_name;
下面的語句將
group by
分組統計封裝在
cte中,然後將
cte開啟兩次,取出每區域中購買量最大的客戶。查詢結果如表
19-13
所示。with cte (area_name, cust_name, sale_amt)
as (select a.area_name, s.cust_name,sum(s.sale_amt)
fromareas as a
joinsales as s
ons.cust_code between a.start_code and a.end_code
group bya.area_name, s.cust_name)
select c1.area_name, c1.cust_name, c1.sale_amt
from cte as c1
where c1.sale_amt = (select max(c2.sale_amt)
from cte as c2
where c2.area_name =c1.area_name); 表
19-13
查詢結果
area_name
cust_name
sale_amt華南
王五3000.00華東
李四 4000.00
求指定範圍內的最大數
同學們都知道,無論哪個語言入門學習時,第乙個sample都是 hello world!我們學習演算法,第乙個入門的問題也許就是求給定輸入的最大或者最小,那麼我們今天也來求解這個問題,只不過我們今天需要你求的是指定範圍內的最大值。input 本問題有多組測試資料,每一組有兩行,其中第一行有三個整數n,...
範圍內資料查詢的sql
between and 查詢範圍內的sql select from 表名 where 要查詢的字段 between 範圍的開始 and 範圍的結束 如果你的資料庫儲存的是時間戳的話,想要查詢某一天到某一天的範圍的話,可以使用這個,當然如果你的資料庫儲存的不是時間戳,也可以使用 to days to ...
sql 指定範圍內的隨機數
cast rand 0.2 0.4 as dec 14,2 通過 rand 0.2 來確定初步範圍,通過 0.4來確定最終範圍 cast a as b 將a的替換為b的格式,b為資料型別 cast expression as data type 引數說明 expression 任何有效的sqserv...