校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Sql學習第一天——SQL 練習題(建表/sql語句)

Sql學習第一天——SQL 練習題(建表/sql語句)

熱門標簽:怎么給高德做地圖標注 慶陽地圖標注 承德地圖標注公司名需要花錢嗎 電銷外呼系統軟件功能 浙江穩定外呼系統供應商 北京400電話辦理多少錢 榕城市地圖標注 咸陽電腦外呼系統運營商 美團地圖標注商戶認證注冊

題目:來自Madrid且訂單數少于3的消費者  

建表:

復制代碼 代碼如下:

set nocount on --當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數
use SY
GO
if object_Id('dbo.Orders') is not null
drop table dbo.Orders
GO
if object_Id('dbo.Customers') is not null
drop table dbo.Customers
GO
create table dbo.Customers
(
customerid char(5) not null primary key ,
city varchar(10) not null
);
insert into dbo.Customers values('FISSA','Madrid');
insert into dbo.Customers values('FRNDO','Madrid');
insert into dbo.Customers values('KRLOS','Madrid');
insert into dbo.Customers values('MRPHS','Zion');

create table dbo.Orders
(
orderid int not null primary key ,
customerid char(5) null references customers(customerid)
)
insert into dbo.Orders values(1,'FRNDO');
insert into dbo.Orders values(2,'FRNDO');
insert into dbo.Orders values(3,'KRLOS');
insert into dbo.Orders values(4,'KRLOS');
insert into dbo.Orders values(5,'KRLOS');
insert into dbo.Orders values(6,'MRPHS');
insert into dbo.Orders values(7,null);

------------------------------------------------------------------------------------------------------------------------------

做題分析:

復制代碼 代碼如下:

select customerid as 消費者,count(customerid) as 訂單數
from dbo.Orders
where customerid in (
select customerid
from dbo.Customers
where city = 'Madrid')
group by customerid
having count(customerid) 3

結果如圖所示:

--第一次想到的答案,突然發現少了一個來自Madrid的FISSA訂單,FISSA訂單數量為0,所以在Orders表中沒有出現,所以上面的寫法會少一個.

--推翻了上面的答案,又想到了用表的連接,而用內連接出現的情況會和上面的一樣,所以我選擇了左連接,如下:

復制代碼 代碼如下:

select C.customerid as 消費者,count(O.customerid) as 訂單數
from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
where C.city= 'Madrid'
group by C.customerid
having count(C.customerid) 3

結果如圖所示:

--查詢發現是正確的。

--分析查看不帶條件的左連接

復制代碼 代碼如下:

select * from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
復制代碼 代碼如下:

select * from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid

結果如圖所示:

--書中給的標準答案是:

復制代碼 代碼如下:

select C.customerid , count(O.orderid) as numorders
from dbo.Customers as C left join dbo.Orders as O on C.customerid = O.customerid
where C.city= 'Madrid'
group by C.customerid
having count(O.orderid) 3
order by numorders

結果如圖所示:

--書中給的只是多了一個order by 進行定義了排序方式(以numorders這一列的升序進行排序)

您可能感興趣的文章:
  • oracle 創建表空間步驟代碼
  • oracle 創建表空間詳細介紹
  • MySQL動態創建表,數據分表的存儲過程
  • MYSQL建立外鍵失敗幾種情況記錄Can''t create table不能創建表
  • Mysql 建庫建表技巧分享
  • SQL Server--怎樣用ADO在SQL SERVER中建庫,建表

標簽:拉薩 貴州 新鄉 上海 昭通 江蘇 呼和浩特 重慶

巨人網絡通訊聲明:本文標題《Sql學習第一天——SQL 練習題(建表/sql語句)》,本文關鍵詞  Sql,學習,第一天,SQL,練習題,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Sql學習第一天——SQL 練習題(建表/sql語句)》相關的同類信息!
  • 本頁收集關于Sql學習第一天——SQL 練習題(建表/sql語句)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 金门县| 新安县| 垣曲县| 郴州市| 灵寿县| 太谷县| 逊克县| 罗平县| 南丰县| 衡阳市| 界首市| 淮阳县| 虞城县| 沾益县| 勐海县| 南澳县| 文水县| 苍山县| 米易县| 龙井市| 丰县| 石柱| 师宗县| 射洪县| 乐业县| 怀集县| 和田市| 旅游| 汝阳县| 泌阳县| 永丰县| 蓝山县| 威宁| 丁青县| 大新县| 平罗县| 霍邱县| 沾化县| 灵石县| 仁化县| 龙州县|