Bài viết này sẽ thảo luận về SQL: Tự tham gia và Nhóm theo.
Bạn đang xem : tham gia và nhóm theo sql
Đây là câu hỏi phỏng vấn. Nó có vẻ rất đơn giản, nhưng có một số thủ thuật trong đó. Phân tích nó có thể xem xét một số khái niệm quan trọng của Truy vấn SQL.
Câu hỏi
Cho một bảng có bốn cột,
- Nhân viên – bảng có các cột,
- Id
- Tên
- Mức lương
- ManagerId
Yêu cầu
Nhận Tên người quản lý, số tiền nhân viên cho mỗi người quản lý và tổng số tiền lương cho mỗi nhóm.
A- Thiết lập bảng và dữ liệu ban đầu
Thiết lập Bảng theo câu hỏi,
-
SỬ DỤNG [TestDB]
-
ĐI
-
/ ****** Đối tượng:
Bảng
[dbo]. [Nhân viên] Tập lệnh
Ngày
: 28/5/2021 7:42:51 CH ****** /
-
ĐẶT
ANSI_NULLS
BẬT
p>
-
ĐI
-
ĐẶT
QUOTED_IDENTIFIER
BẬT
p >
-
ĐI
-
TẠO
BẢNG
[dbo] . [Nhân viên] (
-
[Id] [
int
] IDENTITY (1,1)
KHÔNG
KHÔNG ĐỦ
,
-
[
Tên
] [nvarchar] (
max
)
KHÔNG
KHÔNG ĐỦ
,
< / p>
-
[Lương] [
int
]
KHÔNG
KHÔNG ĐỦ
,
-
[ManagerId] [
int
]
KHÔNG
< p>
KHÔNG ĐỦ
,
-
ĐIỂM YẾU
[PK_dbo.E Nhân viên]
CHÍNH
TỪ KHÓA
ĐÃ ĐIỀU CHỈNH
-
(
-
[Id]
ASC
-
)
CÓ
(PAD_INDEX =
TẮT
, STATISTICS_NORECOMPUTE =
TẮT
, IGNORE_DUP_KEY =
TẮT
, ALLOW_ROW_LOCKS =
BẬT
, ALLOW_PAGE_LOCKS =
BẬT
, OPTIMIZE_FOR_SEQUENTIAL_KEY =
TẮT
)
BẬT
[
CHÍNH
]
-
)
BẬT
[
CHÍNH
] TEXTIMAGE_ON [
CHÍNH
]
-
ĐI
Chèn dữ liệu ban đầu
-
insert
dbo. Nhân viên
-
Giá trị
(
‘Greg’
, 100000, 1),
-
(
‘George’
, 150000, 1),
-
(
‘Helen’
, 130000, 1),
-
(
‘Tom’
, 120000, 2),
-
(
‘Kevin’
, 110000, 2),
-
(
‘David’
, 120000, 3),
-
(
‘Geek’
, 110000,3),
-
(
‘Tesla’
, 120000,3)
Kết quả sẽ là,
B- Tự THAM GIA
Đây là sự cố TỰ THAM GIA. Tự tham gia là một tham gia thông thường, nhưng bảng được tham gia với chính nó. Chúng tôi xem xét các loại THAM GIA bên dưới,
Các loại SQL JOINs [ ref ]
Dưới đây là các loại JOIN khác nhau trong SQL,
- (INNER) JOIN- Trả về các bản ghi có giá trị phù hợp trong cả hai bảng
- LEFT (OUTER) JOIN- Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải
- RIGHT (OUTER) JOIN- Trả về tất cả các bản ghi từ bảng bên phải và kết quả phù hợp
bản ghi từ bảng bên trái - FULL (OUTER) JOIN- Trả về tất cả các bản ghi khi có kết quả khớp ở một trong hai bên trái
hoặc bảng bên phải
Chúng tôi tự THAM GIA,
- Bảng bên trái là bảng nhân viên –
dbo. Nhân viên e và
-
Bảng bên phải là bảng người quản lý – dbo. Nhân viên m,
-
Trong đó ManagerId của bảng Nhân viên == Id của bảng Người quản lý (EmployeeId)
-
CHỌN
m.
Tên
[ Người quản lý
Tên
], e.Id [ID nhân viên], e.salary [Lương nhân viên]
-
TỪ
dbo. Nhân viên e
THAM GIA
dbo.Những người lao động m
-
BẬT
e.ManagerId = m.Id
Chúng tôi đã có kết quả,
Trong đó Tên người quản lý là những gì chúng ta cần, ID nhân viên và mức lương
CHỌN từ bảng nhân viên (bên trái) mà chúng tôi cần đếm và tính tổng.
Trong đó Tên người quản lý là những gì chúng tôi cần, ID nhân viên và Lương được CHỌN từ bảng nhân viên (bên trái) mà chúng tôi cần tính và tổng. p>
C- Nhóm theo [ ref ]
Để tính số và tổng, chúng ta cần sử dụng Mệnh đề Nhóm theo ,
Câu lệnh SQL GROUP BY
Câu lệnh GROUP BY nhóm các hàng có cùng giá trị thành tóm tắt
, chẳng hạn như “tìm số lượng khách hàng ở mỗi quốc gia”.
Câu lệnh GROUP BY thường được sử dụng với các hàm tổng hợp ( COUNT () ,
MAX () ,
MIN () , SUM () ,
AVG () ) để nhóm kết quả được đặt theo một hoặc nhiều cột.
-
CHỌN
m.
Tên
[ Người quản lý
Tên
],
số lượng
(m.Id) [nhóm số tiền],
sum
(e.salary) [Tổng lương]
-
TỪ
dbo. Nhân viên e
THAM GIA
dbo.Những người lao động m
-
BẬT
e.ManagerId = m.Id
-
nhóm
bởi
m. p>
tên
Chúng tôi nhóm theo m.name và sử dụng hàm tổng hợp Count () và Sum ().
LƯU Ý
Khi chúng tôi chọn m.name, chúng tôi phải nhóm theo m.name, nếu không, giả sử chúng tôi nhóm theo m.id (điều đó chính xác),
-
CHỌN
m.
Tên < / p>
[Người quản lý
Tên
],
số lượng
(m.Id) [số tiền của nhóm],
sum
(e.salary) [Tổng lương]
>
-
TỪ
dbo. Nhân viên e
THAM GIA
dbo.Những người lao động m
-
BẬT
e.ManagerId = m.Id
-
group
bởi
m.id < / p>
Sau đó, chúng tôi nhận được thông báo lỗi cho m.name đã chọn,
Bản tin 8120, Mức 16, Trạng thái 1, Dòng 1,
Cột ‘dbo.Eprisees.Name’ không hợp lệ trong danh sách lựa chọn vì nó không có trong hàm tổng hợp hoặc mệnh đề GROUP BY.
Tóm tắt
Bài viết này đã thảo luận về các tính năng chính của truy vấn SQL – JOIN và Group By.
Tham khảo
- SQL
Tham gia
— w3schools.com p>
- Câu lệnh SQL
GROUP BY
Xem thêm những thông tin liên quan đến chủ đề tham gia và nhóm theo sql
Bài 3: [Học SQL từ đầu] – Sữ dụng Inner Join, Left Join, Right Join, Full Outer Join, Union
- Tác giả: GROUP PTC
- Ngày đăng: 2020-05-28
- Đánh giá: 4 ⭐ ( 2649 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Hướng Dẫn SQL.
Sữ dụng một số câu lệnh cơ bản SQL để lấy dữ liệu:
– Select … Where…Group By.. Order By
– Inner Join
– Left Join,
– Right Join
– Full Outer Join
– Union
– Union ALL
– Nếu thấy hay các bạn đăng ký ủng hộ mình nhé, để mình có thêm động lực làm thêm nhiều bài khác.
– SQL bài hướng dẩn: https://drive.google.com/file/d/1VKozjHFxfJEE1zwCIXLneEUJXyfsFP9f/view?usp=sharing
SQL Server: Sự khác biệt giữa THAM GIA BỞI và NHÓM B BYNG
- Tác giả: qastack.vn
- Đánh giá: 4 ⭐ ( 5077 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Chúng được sử dụng ở những nơi khác nhau. group bysửa đổi toàn bộ truy vấn,…
sql chọn với nhóm theo và tham gia để tra cứu
- Tác giả: vncodeblog.com
- Đánh giá: 5 ⭐ ( 5235 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
MS SQL – Tham gia với nhóm bằng
- Tác giả: vie.northmyrtlebeachwomansclub.com
- Đánh giá: 3 ⭐ ( 9889 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tôi rất mới làm quen với SQL và tìm hiểu nó từ cuốn sách “SAMS Tự dạy SQL trong 24 giờ”. Mối quan tâm của tôi là tất cả về các phép nối và nhóm đầu ra được chọn. Đây là cấu trúc bảng của tôi: TẠO BẢNG
NHÓM SQL THEO Câu lệnh
- Tác giả: vi.w3hmong.com
- Đánh giá: 4 ⭐ ( 8906 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
Access SQL: khái niệm cơ bản, từ vựng và cú pháp
- Tác giả: support.microsoft.com
- Đánh giá: 5 ⭐ ( 4551 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tìm hiểu cách để truy xuất dữ liệu từ cơ sở dữ liệu Access bằng ngôn ngữ truy vấn có cấu trúc hoặc SQL
Gom nhóm dữ liệu với GROUP BY trong SQL
- Tác giả: shareprogramming.net
- Đánh giá: 3 ⭐ ( 9930 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tức là nếu một cột cụ thể của các dòng khác nhau có giá trị giống nhau thì chúng sẽ được sắp xếp thành một nhóm.
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình