“SELECT * WHERE a=b FROM c” “SELECT WHERE a=b FROM c ON *” ?
, : SQL — , ( -!), - , .
, , , . :
SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
FROM books
WHERE stock>(SELECT avg(stock)
FROM books))
GROUP BY members.firstname, members.lastname;! , , SQL . .
, SQL , PostgreSQL. MySQL .
SQL , SELECT, FROM WHERE . , , , , .
, :



. .
bookid “books”, memberid “members”. , .: (id) , “Dan Brown”
:
SELECT bookid AS "id", title
FROM books
WHERE author='Dan Brown';:
| id | title |
|---|---|
| 2 | The Lost Symbol |
| 4 | Inferno |
. , .
, FROM , .
FROM , . ( ), , .
WHERE - , . , author — “Dan Brown”.
, , , . , SELECT. AS.
:

( ) , , :
SELECT books.title AS "Title", borrowings.returndate AS "Return Date"
FROM borrowings JOIN books ON borrowings.bookid=books.bookid
WHERE books.author='Dan Brown';:
| Title | Return Date |
|---|---|
| The Lost Symbol | 2016-03-23 00:00:00 |
| Inferno | 2016-04-13 00:00:00 |
| The Lost Symbol | 2016-04-19 00:00:00 |
FROM. , . “books”, “borrowings”. , .
borrowings JOIN books ON borrowings.bookid=books.bookid — , , , "books" "borrowings", bookid . :

, . , , . , « » 3.
.
, “Dan Brown”.
:
Step 1 — ? , “member” “books” “borrowings”. JOIN :
borrowings
JOIN books ON borrowings.bookid=books.bookid
JOIN members ON members.memberid=borrowings.memberid2 — ? , — “Dan Brown”
WHERE books.author='Dan Brown'3 — ? , , , :
SELECT
members.firstname AS "First Name",
members.lastname AS "Last Name"! :
SELECT
members.firstname AS "First Name",
members.lastname AS "Last Name"
FROM borrowings
JOIN books ON borrowings.bookid=books.bookid
JOIN members ON members.memberid=borrowings.memberid
WHERE books.author='Dan Brown';:
| First Name | Last Name |
|---|---|
| Mike | Willis |
| Ellen | Horton |
| Ellen | Horton |
! ( ). .
, . , .
, . , Ellen Horton , . :
SELECT
members.firstname AS "First Name",
members.lastname AS "Last Name",
count(*) AS "Number of books borrowed"
FROM borrowings
JOIN books ON borrowings.bookid=books.bookid
JOIN members ON members.memberid=borrowings.memberid
WHERE books.author='Dan Brown'
GROUP BY members.firstname, members.lastname;:
| First Name | Last Name | Number of books borrowed |
|---|---|---|
| Mike | Willis | 1 |
| Ellen | Horton | 2 |
GROUP BY. , , . ( ) , GROUP BY. . count, ( ). .
.
, GROUP BY, . , SELECT', , .
count ( ). sum max . , , , :
SELECT author, sum(stock)
FROM books
GROUP BY author;:
| author | sum |
|---|---|
| Robin Sharma | 4 |
| Dan Brown | 6 |
| John Green | 3 |
| Amish Tripathi | 2 |
sum stock .

SQL-, . .
, . . , , . , , “Robin Sharma”, — :
SELECT *
FROM (
SELECT author, sum(stock)
FROM books
GROUP BY author
) AS results
WHERE author='Robin Sharma';:
| author | sum |
|---|---|
| Robin Sharma | 4 |
, , , .
, , , . :
1. 3. :
SELECT author
FROM (
SELECT author, sum(stock)
FROM books
GROUP BY author
) AS results
WHERE sum > 3;:
| author |
|---|
| Robin Sharma |
| Dan Brown |
: ['Robin Sharma', 'Dan Brown']
2. :
SELECT title, bookid
FROM books
WHERE author IN (
SELECT author
FROM (
SELECT author, sum(stock)
FROM books
GROUP BY author
) AS results
WHERE sum > 3);:
| title | bookid |
|---|---|
| The Lost Symbol | 2 |
| Who Will Cry When You Die? | 3 |
| Inferno | 4 |
, :
SELECT title, bookid
FROM books
WHERE author IN ('Robin Sharma', 'Dan Brown');, . , , , , . , .
, , , .
:
select avg(stock) from books;:
| avg |
|---|
| 3.000 |
3.
, , :
SELECT *
FROM books
WHERE stock>(SELECT avg(stock) FROM books);, :
SELECT *
FROM books
WHERE stock>3.000:
| bookid | title | author | published | stock |
|---|---|---|---|---|
| 3 | Who Will Cry When You Die? | Robin Sharma | 2006-06-15 00:00:00 | 4 |
, .
UPDATE . , SELECT', SET'.
, . :
UPDATE books
SET stock=0
WHERE author='Dan Brown';WHERE , : . SELECT, , SET. , , .
DELETE SELECT UPDATE . . SELECT UPDATE, WHERE : , . , . , , , :
DELETE FROM books
WHERE author='Dan Brown';, , , INSERT. :
INSERT INTO x
(a,b,c)
VALUES
(x, y, z);a, b, c , x, y z , , . , , .
. INSERT, "books":
INSERT INTO books
(bookid,title,author,published,stock)
VALUES
(1,'Scion of Ikshvaku','Amish Tripathi','06-22-2015',2),
(2,'The Lost Symbol','Dan Brown','07-22-2010',3),
(3,'Who Will Cry When You Die?','Robin Sharma','06-15-2006',4),
(4,'Inferno','Dan Brown','05-05-2014',3),
(5,'The Fault in our Stars','John Green','01-03-2015',3);, . . ? SELECT, FROM, WHERE, GROUP BY, .
:
SELECT members.firstname || ' ' || members.lastname AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid FROM books WHERE stock> (SELECT avg(stock) FROM books) )
GROUP BY members.firstname, members.lastname;, , .
:
| Full Name |
|---|
| Lida Tyler |
, . , , .
Source: https://habr.com/ru/post/305926/
All Articles