-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLQuery31a.sql
More file actions
80 lines (64 loc) · 1.92 KB
/
SQLQuery31a.sql
File metadata and controls
80 lines (64 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
USE SalesDB;
GO
/*
-- Create Customers Table
CREATE TABLE Customers (
CustomerID INT IDENTITY(1,1) PRIMARY KEY,
FirstName VARCHAR(100),
LastName VARCHAR(100)
);
GO
-- Create Orders Table
CREATE TABLE Orders (
OrderID INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT FOREIGN KEY REFERENCES Customers(CustomerID),
OrderValue DECIMAL(10,2)
);
GO
-- Insert Sample Data into Customers
INSERT INTO Customers (FirstName, LastName)
VALUES
('Alice', 'Wong'),
('Robert', 'Lee'),
('Jessica', 'Adams'),
('Thomas', 'Nguyen'),
('Sophia', 'Martinez'),
('Daniel', 'Brown');
GO
-- Insert Sample Data into Orders
INSERT INTO Orders (CustomerID, OrderValue)
VALUES
(1, 250.00),
(1, 400.00),
(2, 1200.00),
(2, 200.00),
(2, 350.00),
(3, 99.99),
(4, 500.00),
(4, 300.00),
(5, 700.00),
(6, 50.00);
GO
*/
--Use a subquery in the WHERE clause to filter customers who have placed more orders than the average number of orders per customer.
--You will need to calculate the average number of orders using a subquery on the Orders table.
select * from Customers;s
select * from Orders;
--select count(OrderID) from orders o join Customers c on o.CustomerID=c.CustomerID;
select * From Customers c join Orders o on c.CustomerID=o.CustomerID where o.orderID > (select avg(orderID) from orders o where c.CustomerID=o.CustomerID );
(select avg(orderID) from orders o where c.CustomerID=o.CustomerID;
-- Select Customers Who Placed More Orders Than the Average
select CustomerID, FirstName, LastName
From Customers where customerID in (
SELECT CustomerID
FROM Orders
GROUP BY CustomerID
HAVING COUNT(OrderID) >( --those customers whose count is above that average.
SELECT avg(ordercount) ---avg Order per customer
FROM (
SELECT COUNT(OrderID) AS OrderCount
FROM Orders
GROUP BY CustomerID
) AS SubQuery)
)
;