婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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語句)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 肇庆市| 贵定县| 奉新县| 建水县| 岑巩县| 浦东新区| 巩义市| 荥经县| 百色市| 嘉荫县| 大足县| 如皋市| 岐山县| 西乌| 洛浦县| 舟曲县| 和田县| 湛江市| 铅山县| 钟山县| 宜兰县| 商丘市| 大竹县| 大兴区| 漳平市| 雷山县| 习水县| 宜兰县| 大荔县| 乐业县| 巴彦县| 特克斯县| 呈贡县| 定兴县| 太仓市| 城步| 禹州市| 鹤岗市| 沈阳市| 遂川县| 玛曲县|