From 05650c8173dd9ffbc0935000ebb9f021fb6df165 Mon Sep 17 00:00:00 2001 From: orianatorrealba Date: Thu, 5 Jun 2025 00:22:08 +0000 Subject: [PATCH 1/3] Programacao SQL --- .vscode/settings.json | 1 - chinook.db | Bin 886784 -> 890880 bytes exercicios/1-CRUD/1-criar-tabela.sql | 15 +++++++++++++++ exercicios/1-CRUD/2-alterar-tabelas.sql | 11 +++++++++++ exercicios/1-CRUD/3-inserir-dados.sql | 12 ++++++++++++ exercicios/1-CRUD/4-consultar-dados.sql | 10 ++++++++-- exercicios/1-CRUD/5-atualizar-dados.sql | 12 ++++++++++-- exercicios/1-CRUD/6-remover-dados.sql | 4 ++++ 8 files changed, 60 insertions(+), 5 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index c97cc32..778b9d2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,7 +18,6 @@ "screencastMode.onlyKeyboardShortcuts": true, "terminal.integrated.fontSize": 18, "window.zoomLevel": 3, - "workbench.activityBar.visible": true, "workbench.colorTheme": "Visual Studio Dark", "workbench.fontAliasing": "antialiased", "workbench.statusBar.visible": true diff --git a/chinook.db b/chinook.db index 1b68fe3f88e8ac77db8e2efbfefc71be739b6ea1..8a63fd63bc54335f80b5a3070b32e486f3181112 100644 GIT binary patch delta 4963 zcmaJ_4OmuHw%%*4!~PKXG$sfEfe-va5)~vA5>pG5{6Ro8@DC6$Fa!cL%?$A|tcFTO zJ7!t=iM7H#(W#r0Gh&%$T{W}xjy7YZbFV*hXWnz5CZ6eD_VaP}S$nOs)?RzP z@80JuTsm;!_JK=7{S%dv8Tb_|r5L|~%VHC}5>>z0%pJvZMF&9?*rny1L>a-pl0>pe z{wgPBru;#6%48WM%Vd$5kp&dgGA!k{+%zm@UchgBC5CDW%L}W^D)WoV3u|ghyjsTi z?hk;IqNezi2bzjJ&(Uo39`<=6*vl0Z5kXH=%c4jh_Vtt%=eL_SEes87d9{0SEJ>4B zW(|Tf2AMQ^|7a z$y?M~)sr(?0t&o{RV|!WS?3zu;ncEadLG?&Nr`-hInn|7NX+rjrl) zb=%@4ME--J;G=~&o}jtAtrxebw4sz5O1Ys_8cK~lrC$1?-vY&JB!~V?{nY}vdMKd2 zzn8xX4N9Pdgr1@P!J&Qo4kB|^rd|_B^+|@m3JkM{`r1SN`wt;AJxg!GP@KRj&>o6z z8%iXTvh~Xtx{Lf(P;eiWkdP4OSS6D=ZMp`hrWeD&`?h{l(d&nYzD&eqGj z7;d_#gyIy%$p~JJnMP4SeWLbPVWE+*No?~pn9QjU==ENLN$)f-PtcpXp|?u~28Y$h zctbfT49eXj9p9MD%?a8>Sc6=cOt3w4U)vDE+Bi{fB-)d!sapgmDPL8f_4GVD;bXH3-pQ zbe~l;S4Wc}>(vD7*?BsUZTqQa^L#xy{H*GvhALSvd3=DYxd(khkE!JlIStkk=FrFV zT0=Uim(25z=^VS4YNagDN1QM+O?REX8o|#YioHr&WR~>e&pDm`hqllZazi*n&A@X; z7|_YFW-in{9si@OrbW5}@t?<}r`nd&r7IuiI_^(RbdS2C)_b%HtKYPzgAh+o<`l*F&=4Mcvgo{1mA^#OO))8 zBI(8_`BAz=YhX?&fD%;#^E9huss57_@CYkux&8>VoB^ZZ_AE#6Ro=uCm}wV9suSut zh=;={(i*-(_iSIS%)3CCY+>1_71Er`JAVh;rKQm*Me#HO~##!I5 z(jF(yv1Z_l`f?(VgLS=uD+ls3Q;#K>N2p7>u(9zJ&DJgaYg-A1$`O@0(Yk<^>|Qz8wf;gn9}@W>)6qbhoY9;ZfHPA}6&+Da|7m)@ffP)w)j zE4oO3p=)%Deb}G7aya+kK0JVvc_feLNnFUKnA{wGj2H29{5-GW4g4DK;I}a8BX#^K zpW?IpEq}*X#ap__9TFxzq>l`cB)LaMOSa@mfy_YN)q-Z9lBM#zyd>*n3-Wdd6nsoR zm$Py~{vucZ&vrxF+rK5n{Ku<0z@UlBWd^O)Lk)TYy-90zpCDSLTtZ81@-x`^-<3XA z+I(rPjx$)Gc66;yFnAbxu5~)upT{bfi>hr^Z{a7Qnzc?3GWY-#8rRvXH_nUA6L^-vNEy}I?b(hcSALg~0@^LG%0Ab9OR*oOwFBG5Q>qT48l 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.d6X& zWSXW|$)1+M@~URj&#Gjci(%>lV@xBtN%pmjk~TFP6>n-XY6VHA(Wm@Ffbr(h+Yrzq zKmjel9ef}V+CcQV{F&k-MqIqgK)4~cC*axRm*tmEviOFo00d0MTU`| zhiN*qraAK4YMO(3y++2Hkq>~WrcwLaW}^wU%|`2Ln<5_!qfDdkYi0Yk9C8;iU2we} zNzQnLBlQe?4@;n%xFn`CDbw`nTjVrQ2HRa!{mNGP47M>4nSv^55I*8qrZE+_K@K>H zdM)@V#;!_Jw9M^ttdeT?Q+0j2?8`*9|3%dw?~u-5ICK^51=Vssw`7OYFpw#=0K&y- zQCu6iOQMo&4_5Wi-SSG4(!?05Q9z!|m+|Ng$JshUTw&hFtQz2{$Lx_wEHw7cs$RTT zc0*;jJzUlH=rW~Qa<)(gspj6=u&Y;~v$!GFH%rcbxmJ1Bo}lWt_sdXJhS+0O&F!Fk zU_~ZR(0)F0Z_bk(bmHur2CYP$$m7T)>UoFcV^F5r2dVnFBeJS#wMBvs&@2kUbNDKT zbDCDLumIPMA_k4ni$0bitp4_NRo6a|Q!QQO9q#1Za^{458H3y=#lI8{G;Om;_Qggr~uT)&i$tjaN3&_^r_p)4e&7|rG8Z5Sc`5Ie+ZcGycvw@*{` zv452vjANLr>TevEbAdy{$B<>X9Y<~O7#G@3@EyDk@#2oyEVR0H&hdKI3Hcf@ezvMN zo|NJEEQ4mUl!7Z)tDQ0vwAEv?0SzL4MxRj;Q;^r3IiTm*IpSbxeJ|;mnasw~&W_E`BkDWA> z(wLfKX%fB2fj6jGLd&^Syu&$KOFNjFhv+jpP7QRP{zfAE8Pd9V=?CE9> zx}0g^bQH`tj5@2PY08;qx-L7@Z2B>qMjC3`4Z2#7e4|Zs6$u6#M&MKY5VO$@j>2pR z5a+~OT5xwIKb%@;k|A5LO3k8ncnQmJAl!p0NaJ>F zzsTlPiPy3($Z^VWhr6mDx?t4b!HyQHezlPk*2=VG!O_ejg->S&>%(sEA$d>YVN`NkPedbI-k8I>iIXMZeSu+E$EiKZV5}g(aB6= zXAQU<`*WQrhG5YkmaGXTKPkj8#{gCDb6cjOGSJaW)ysa8FEuSQ+(1sHVD`2Y4V@_9 zupSdH>w$OW7G{AXN!5@4EPJBmsH?&9DXd9`WCp=Wurp&Xi()x!O{c0>Sw>nOmTPn1^1l55|I<*eMElPeXY(`KtcnLt}jzjxnl!^fx)s z>{=2rPT*@;!n>M_BXI~;a1*otTSG-5e{T(~gI#8B2RJ4A8adP^j7G~4NkPi480k5gH{ z{$TwJFe(?T<#rm*^K8PQ+&@%7iugA-%7#`ZtQl?F%=tfG)e&sNP|0-^saiVOc3DR^ z#c($c?{n}Ix$*lDvcM)j5mOjCOrN6IzUMNuSg3lEw0+dXm|Q_0ay}aMV10GhZ$EGX8hr%T>3vYWaAk^|{(VA+6k3aZ_-$plbfi cyN;_-;Saq>0A)Pga&2{K%ar;zCj`QO0g0ft)Bpeg diff --git a/exercicios/1-CRUD/1-criar-tabela.sql b/exercicios/1-CRUD/1-criar-tabela.sql index 2cfe0e8..d76a67d 100644 --- a/exercicios/1-CRUD/1-criar-tabela.sql +++ b/exercicios/1-CRUD/1-criar-tabela.sql @@ -1 +1,16 @@ -- Crie uma nova tabela no banco de dados +CREATE TABLE salario_classe ( +id INTEGER PRIMARY KEY AUTOINCREMENT, +nivel TEXT, +salario INTEGER +); + + +CREATE TABLE nova_salario_classe1 ( +id INTEGER PRIMARY KEY AUTOINCREMENT, +nivel varchar(50), +salario REAL +); + + + diff --git a/exercicios/1-CRUD/2-alterar-tabelas.sql b/exercicios/1-CRUD/2-alterar-tabelas.sql index 070e4af..f60bef2 100644 --- a/exercicios/1-CRUD/2-alterar-tabelas.sql +++ b/exercicios/1-CRUD/2-alterar-tabelas.sql @@ -1,3 +1,14 @@ -- Na tabela salario_classe altere o atributo "nivel" para que seu tipo de dado seja varchar, com tamanho máximo de 50 caracteres +INSERT INTO nova_salario_classe (id,salario) +SELECT id,salario FROM salario_classe + +DROP TABLE salario_classe + +ALTER TABLE nova_salario_classe1 RENAME TO salario_classe + +ALTER TABLE salario_classe +ADD COLUMN nivel varchar(50) -- Na tabela employees, adicione uma coluna para receber o id_salario +ALTER TABLE employees +ADD id_salario INTEGER; \ No newline at end of file diff --git a/exercicios/1-CRUD/3-inserir-dados.sql b/exercicios/1-CRUD/3-inserir-dados.sql index d138f45..150a8a4 100644 --- a/exercicios/1-CRUD/3-inserir-dados.sql +++ b/exercicios/1-CRUD/3-inserir-dados.sql @@ -1,4 +1,16 @@ -- Insira 3 classes salariais na tabela salario_classe +INSERT INTO salario_classe (id,nivel,salario) +VALUES +(001, 'Estagiária', 3500.00), +(002, 'Junior', 4500.00), +(003, 'Senior', 6500.00); +-- Insira 1 nova classe salarial, sem declarar o atributo id_salario +INSERT INTO salario_classe (nivel,salario) +VALUES +('Especialista', 8000.00), +('Especialista 2', 9000.00); + +SELECT id FROM salario_classe; -- Insira 1 nova classe salarial, sem declarar o atributo id_salario diff --git a/exercicios/1-CRUD/4-consultar-dados.sql b/exercicios/1-CRUD/4-consultar-dados.sql index e626866..e8823b4 100644 --- a/exercicios/1-CRUD/4-consultar-dados.sql +++ b/exercicios/1-CRUD/4-consultar-dados.sql @@ -1,4 +1,10 @@ -- Crie uma consulta que retorne apenas as colunas "Name", "Composer" e "AlbumId" da tabela "tracks" - - +SELECT +Name, +GenreId, +Composer +FROM +tracks -- Repita a consulta anterior e dessa vez filtre os registros para que retornem apenas as tracks com o atributo "AlbumId" igual a 1 +WHERE +Name = 'Fast As a Shark'; \ No newline at end of file diff --git a/exercicios/1-CRUD/5-atualizar-dados.sql b/exercicios/1-CRUD/5-atualizar-dados.sql index c6c60fd..38480d4 100644 --- a/exercicios/1-CRUD/5-atualizar-dados.sql +++ b/exercicios/1-CRUD/5-atualizar-dados.sql @@ -1,7 +1,15 @@ -- Atualize a classe salarial para a pessoa cujo EmployeeId é igual a 6. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe - +UPDATE employees +SET id_salario = 3 +WHERE EmployeeId = 6; -- Atualize a classe salarial e o LastName da pessoa cujo EmployeeId é igual a 2. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe - +UPDATE employees +SET id_salario = 4, +LastName = 'Silva' +WHERE EmployeeId = 2; -- Atualize a classe salarial 1 para as pessoas cuja coluna id_salario continua NULL. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe +UPDATE employees +SET id_salario = 1 +WHERE id_salario is NULL; \ No newline at end of file diff --git a/exercicios/1-CRUD/6-remover-dados.sql b/exercicios/1-CRUD/6-remover-dados.sql index 70c1e54..7e1a446 100644 --- a/exercicios/1-CRUD/6-remover-dados.sql +++ b/exercicios/1-CRUD/6-remover-dados.sql @@ -1,4 +1,8 @@ -- Da tabela invoice, remova o invoice cujo o InvoiceID corresponda ao valor 33 +DELETE FROM invoices +WHERE InvoiceID = 33; -- Da tabela invoice, remova todos os invoices cujo o Total seja menor do que 1 +DELETE FROM invoices +WHERE Total < 1; \ No newline at end of file From 55854c975ea6fbb1697065f9d6f44a268e10f601 Mon Sep 17 00:00:00 2001 From: orianatorrealba Date: Fri, 6 Jun 2025 00:44:36 +0000 Subject: [PATCH 2/3] Criando consultas com operadores logicos --- .../2-construindo-consultas/1-operadores.sql | 25 +++++++-- .../2-valores-unicos-alias.sql | 16 +++++- .../2-construindo-consultas/3-condicional.sql | 12 ++++- .../4-transformando-dados-textuais.sql | 54 +++++++++++++++++-- .../5-funcoes-agregadoras.sql | 11 ++++ 5 files changed, 107 insertions(+), 11 deletions(-) diff --git a/exercicios/2-construindo-consultas/1-operadores.sql b/exercicios/2-construindo-consultas/1-operadores.sql index 860a533..fa15df2 100644 --- a/exercicios/2-construindo-consultas/1-operadores.sql +++ b/exercicios/2-construindo-consultas/1-operadores.sql @@ -1,6 +1,25 @@ -- Construa uma consulta para a tabela "invoice_items" que retorne apenas as colunas InvoiceId, TrackId e UnitPrice. - +SELECT +TrackID, +UnitPrice +FROM +invoice_items; -- Inclua nessa consulta mais três colunas, cada uma como resultado de uma operação aritmética diferente - +SELECT +TrackID, +UnitPrice, +UnitPrice * 1.3, +UnitPrice + 2.11, +(UnitPrice + 2.11) % 2 +FROM +invoice_items; -- Incremente essa consulta utilizando a cláusula WHERE, a qual restringirá o resultado apenas para linhas cujo o InvoiceId seja maior do que 20 e menor ou igual a 30 - +SELECT +TrackID, +UnitPrice, +UnitPrice * 1.3, +UnitPrice + 2.11, +(UnitPrice + 2.11) % 2 +FROM invoice_items +WHERE InvoiceId > 20 +AND InvoiceId <= 30; diff --git a/exercicios/2-construindo-consultas/2-valores-unicos-alias.sql b/exercicios/2-construindo-consultas/2-valores-unicos-alias.sql index 23f2403..a53e063 100644 --- a/exercicios/2-construindo-consultas/2-valores-unicos-alias.sql +++ b/exercicios/2-construindo-consultas/2-valores-unicos-alias.sql @@ -1,7 +1,19 @@ -- Para a tabela "customers" crie uma consulta que retorne apenas os valores únicos da coluna Country - +SELECT DISTINCT +Country +FROM +customers; -- Na consulta anterior, adicione a coluna Company para verificar as combinações únicas entre empresas e países - +SELECT DISTINCT +Country, +Company +FROM +customers; -- Nesta mesma consulta, atribua um alias com título em português para cada coluna +SELECT DISTINCT +Country AS pais, +Company AS empresa +FROM +customers; \ No newline at end of file diff --git a/exercicios/2-construindo-consultas/3-condicional.sql b/exercicios/2-construindo-consultas/3-condicional.sql index 034396b..0868954 100644 --- a/exercicios/2-construindo-consultas/3-condicional.sql +++ b/exercicios/2-construindo-consultas/3-condicional.sql @@ -1,2 +1,12 @@ -- Escreva uma consulta que retorne o nome por extenso dos estados brasileiros - +SELECT DISTINCT +Country as pais, +State as estado_sigla, +CASE + WHEN State = 'SP' THEN 'São Paulo' + WHEN State = 'RJ' THEN 'Rio de Janeiro' +END AS estado +FROM +customers +WHERE +Country LIKE 'Brazil'; diff --git a/exercicios/2-construindo-consultas/4-transformando-dados-textuais.sql b/exercicios/2-construindo-consultas/4-transformando-dados-textuais.sql index 6af41f5..0e18cc5 100644 --- a/exercicios/2-construindo-consultas/4-transformando-dados-textuais.sql +++ b/exercicios/2-construindo-consultas/4-transformando-dados-textuais.sql @@ -1,16 +1,60 @@ -- Crie uma consulta que retorne as colunas CustomerId, FirstName, LastName e Address das pessoas consumidoras brasileiras - +SELECT DISTINCT +CustomerId as ID, +FirstName as Nome, +Lastname as Sobrenome, +Address as Endereço +FROM customers +WHERE +Country LIKE 'Brazil'; -- Na consulta anterior, converta o sobrenome para letras maiúsculas - +SELECT DISTINCT +CustomerId as ID, +FirstName as Nome, +UPPER (Lastname) as Sobrenome, +Address as Endereço +FROM customers +WHERE +Country LIKE 'Brazil'; -- Na consulta anterior, converta o nome para letras minúsculas - +SELECT DISTINCT +CustomerId as ID, +LOWER (FirstName) as Nome, +LastName as Sobrenome, +Address as Endereço +FROM customers +WHERE +Country LIKE 'Brazil'; -- Na consulta anterior, adicione uma coluna cujos os dados seja o resultado da concatenação das colunas de nome e sobrenome - +SELECT DISTINCT +CustomerId as ID, +FirstName as Nome, +LastName as Sobrenome, +FirstName || ' ' || LastName as Nome_completo, +FROM customers +WHERE +Country LIKE 'Brazil'; -- Na consulta anterior, substitua "Av." por "Avenida" na coluna endereço - +SELECT DISTINCT +CustomerId as ID, +FirstName as Nome, +Lastname as Sobrenome, +Address as Endereço, +REPLACE(Address, 'Av.','Avenida') as endereço +FROM customers +WHERE +Country LIKE 'Brazil'; -- Na consulta anterior, utilize o símbolo de coringa para construir padrões textuais +SELECT DISTINCT +CustomerId as ID, +FirstName as Nome, +Lastname as Sobrenome, +Address as Endereço +FROM customers +WHERE +Country LIKE 'Bra%'; \ No newline at end of file diff --git a/exercicios/2-construindo-consultas/5-funcoes-agregadoras.sql b/exercicios/2-construindo-consultas/5-funcoes-agregadoras.sql index c36b7ac..34b44ed 100644 --- a/exercicios/2-construindo-consultas/5-funcoes-agregadoras.sql +++ b/exercicios/2-construindo-consultas/5-funcoes-agregadoras.sql @@ -1 +1,12 @@ -- Para a tabela "invoices", crie uma consulta que retorne o país e a soma das compras realizadas nele, bem como o valor da compra mínima e máxima, a quantidade de compras realizadas e o ticket médio de cada compra. +SELECT +BillingCountry as pais, +SUM (Total) as soma_compras, +COUNT (Total) as qnt_compras_realizadas, +MIN (Total) as menor_compra, +MAX (Total) as maior_compra, +ROUND (AVG (Total),2) as ticket_medio +FROM +invoices +WHERE +BillingCountry = 'Austria'; \ No newline at end of file From 9ec6790c6f1a7b8d675c7a473e68b686458ecb6a Mon Sep 17 00:00:00 2001 From: orianatorrealba Date: Wed, 11 Jun 2025 22:18:33 +0000 Subject: [PATCH 3/3] SQL na pratica --- .../1-tipos-joins.sql | 3 + .../2-join-e-with.sql | 30 +++++++- exercicios/4-refinando-consulta/1-filtro.sql | 12 +++ .../2-group-by-e-having.sql | 29 ++++++- .../3-ordenando-e-limitando.sql | 29 ++++++- gabaritos/1-CRUD/1-criar-tabela_resposta.sql | 6 -- .../1-CRUD/2-alterar-tabelas_resposta.sql | 11 --- gabaritos/1-CRUD/3-inserir-dados_resposta.sql | 11 --- .../1-CRUD/4-consultar-dados_resposta.sql | 15 ---- .../1-CRUD/5-atualizar-dados_resposta.sql | 15 ---- gabaritos/1-CRUD/6-remover-dados_resposta.sql | 7 -- .../1-operadores_resposta.sql | 35 --------- .../2-valores-unicos-alias_resposta.sql | 19 ----- .../3-condicional_resposta.sql | 13 ---- ...-transformando-dados-textuais_resposta.sql | 75 ------------------- .../5-funcoes-agregadoras_resposta.sql | 13 ---- .../1-tipos-joins_resposta.sql | 4 - .../2-join-e-with_resposta.sql | 32 -------- .../1-filtro_resposta.sql | 13 ---- .../2-group-by-e-having_resposta.sql | 32 -------- .../3-ordenando-e-limitando_resposta.sql | 32 -------- 21 files changed, 98 insertions(+), 338 deletions(-) delete mode 100644 gabaritos/1-CRUD/1-criar-tabela_resposta.sql delete mode 100644 gabaritos/1-CRUD/2-alterar-tabelas_resposta.sql delete mode 100644 gabaritos/1-CRUD/3-inserir-dados_resposta.sql delete mode 100644 gabaritos/1-CRUD/4-consultar-dados_resposta.sql delete mode 100644 gabaritos/1-CRUD/5-atualizar-dados_resposta.sql delete mode 100644 gabaritos/1-CRUD/6-remover-dados_resposta.sql delete mode 100644 gabaritos/2-construindo-consultas/1-operadores_resposta.sql delete mode 100644 gabaritos/2-construindo-consultas/2-valores-unicos-alias_resposta.sql delete mode 100644 gabaritos/2-construindo-consultas/3-condicional_resposta.sql delete mode 100644 gabaritos/2-construindo-consultas/4-transformando-dados-textuais_resposta.sql delete mode 100644 gabaritos/2-construindo-consultas/5-funcoes-agregadoras_resposta.sql delete mode 100644 gabaritos/3-consultando-dados-varias-tabelas/1-tipos-joins_resposta.sql delete mode 100644 gabaritos/3-consultando-dados-varias-tabelas/2-join-e-with_resposta.sql delete mode 100644 gabaritos/4-refinando-consulta/1-filtro_resposta.sql delete mode 100644 gabaritos/4-refinando-consulta/2-group-by-e-having_resposta.sql delete mode 100644 gabaritos/4-refinando-consulta/3-ordenando-e-limitando_resposta.sql diff --git a/exercicios/3-consultando-dados-varias-tabelas/1-tipos-joins.sql b/exercicios/3-consultando-dados-varias-tabelas/1-tipos-joins.sql index 9f22696..c4d8063 100644 --- a/exercicios/3-consultando-dados-varias-tabelas/1-tipos-joins.sql +++ b/exercicios/3-consultando-dados-varias-tabelas/1-tipos-joins.sql @@ -1 +1,4 @@ -- Crie uma consulta para realizar um left join com as tabelas "albums" e "artists" +SELECT * +FROM albums +LEFT JOIN artists ON albums.ArtistId = artists.ArtistId; \ No newline at end of file diff --git a/exercicios/3-consultando-dados-varias-tabelas/2-join-e-with.sql b/exercicios/3-consultando-dados-varias-tabelas/2-join-e-with.sql index ec52580..e7227af 100644 --- a/exercicios/3-consultando-dados-varias-tabelas/2-join-e-with.sql +++ b/exercicios/3-consultando-dados-varias-tabelas/2-join-e-with.sql @@ -1,4 +1,32 @@ -- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists" - +SELECT +tra.TrackId as id, +tra.Name as musica, +alb.Title as album, +art.Name as artista +FROM +tracks AS tra +INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId +INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId +WHERE +art.name LIKE '%Gil'; -- Refatore a consulta anterior usando a cláusula "with" e verifique o total de músicas existente na base de terminado artista, ex: Caetano Veloso +WITH musicas AS( +SELECT +tra.TrackId as id, +tra.Name as musica, +alb.Title as album, +art.Name as artista +FROM +tracks AS tra +INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId +INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId) + +SELECT +artista, +COUNT(musica) as qnt_total_musicas +FROM +musicas +WHERE +artista LIKE 'Caetano%'; \ No newline at end of file diff --git a/exercicios/4-refinando-consulta/1-filtro.sql b/exercicios/4-refinando-consulta/1-filtro.sql index 184885f..d857687 100644 --- a/exercicios/4-refinando-consulta/1-filtro.sql +++ b/exercicios/4-refinando-consulta/1-filtro.sql @@ -1 +1,13 @@ -- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists". Além disso, apresente apenas as músicas do artista que contenha "Nação" no nome e título do álbum que não seja "Da Lama Ao Caos" +SELECT +tra.TrackId as id, +tra.Name as musica, +alb.Title as album, +art.Name as artista +FROM +tracks AS tra +INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId +INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId +WHERE +artista LIKE '%Nação%' +AND album NOT LIKE 'Da Lama Ao Caos'; \ No newline at end of file diff --git a/exercicios/4-refinando-consulta/2-group-by-e-having.sql b/exercicios/4-refinando-consulta/2-group-by-e-having.sql index 51f171d..cbeb936 100644 --- a/exercicios/4-refinando-consulta/2-group-by-e-having.sql +++ b/exercicios/4-refinando-consulta/2-group-by-e-having.sql @@ -1,7 +1,32 @@ -- Crie uma consulta usando as tabelas "invoices" e "customers" cujo o resultado seja o total de gastos por cliente - +SELECT +cus.CustomerId as id_cliente, +cus.FirstName as nome, +SUM(inv.Total) as total_gasto +FROM +invoices AS inv +INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId +GROUP BY id_cliente; -- Na consulta anterior, insira um filtro para que apresente apenas os clientes que gastaram mais de R$30 - +SELECT +cus.CustomerId as id_cliente, +cus.FirstName as nome, +SUM(inv.Total) as total_gasto +FROM +invoices AS inv +INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId +GROUP BY id_cliente +HAVING SUM(inv.Total) >= 40; -- Na consulta anterior, insira uma coluna que informe a compra de maior valor feita por cada cliente +SELECT +cus.CustomerId as id_cliente, +cus.FirstName as nome, +MAX(inv.Total) as compra_maior_valor, +SUM(inv.Total) as total_gasto +FROM +invoices AS inv +INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId +GROUP BY id_cliente +HAVING SUM(inv.Total) >= 40; \ No newline at end of file diff --git a/exercicios/4-refinando-consulta/3-ordenando-e-limitando.sql b/exercicios/4-refinando-consulta/3-ordenando-e-limitando.sql index 1726282..bb2d01e 100644 --- a/exercicios/4-refinando-consulta/3-ordenando-e-limitando.sql +++ b/exercicios/4-refinando-consulta/3-ordenando-e-limitando.sql @@ -1,7 +1,32 @@ -- Desenvolva uma consulta para a tabela "customers" que retorne apenas 10 linhas - +SELECT +CustomerId as id, +FirstName as nome, +Country as pais +FROM +customers +LIMIT 10; -- Usando a consulta anterior, ordene a coluna "Country" de forma crescente e "FirstName" de forma decrescente - +SELECT +CustomerId as id, +FirstName as nome, +Country as pais +FROM +customers +ORDER BY +pais ASC, +nome DESC +LIMIT 10; -- Continue usando a consulta anterior, dessa vez retorne 10 resultados, no entando ignore as 3 primeiras linhas +SELECT +CustomerId as id, +FirstName as nome, +Country as pais +FROM +customers +ORDER BY +pais ASC, +nome DESC +LIMIT 10 OFFSET 3; \ No newline at end of file diff --git a/gabaritos/1-CRUD/1-criar-tabela_resposta.sql b/gabaritos/1-CRUD/1-criar-tabela_resposta.sql deleted file mode 100644 index 3429ca2..0000000 --- a/gabaritos/1-CRUD/1-criar-tabela_resposta.sql +++ /dev/null @@ -1,6 +0,0 @@ --- Crie uma nova tabela no banco de dados -CREATE TABLE salario_classe ( - id_salario INTEGER PRIMARY KEY AUTOINCREMENT, - nivel TEXT, - salario INTEGER -); \ No newline at end of file diff --git a/gabaritos/1-CRUD/2-alterar-tabelas_resposta.sql b/gabaritos/1-CRUD/2-alterar-tabelas_resposta.sql deleted file mode 100644 index a4b0f30..0000000 --- a/gabaritos/1-CRUD/2-alterar-tabelas_resposta.sql +++ /dev/null @@ -1,11 +0,0 @@ --- Na tabela salario_classe altere o atributo "nivel" para que seu tipo de dado seja varchar, com tamanho máximo de 50 caracteres -ALTER TABLE salario_classe -DROP nivel; - -ALTER TABLE salario_classe -ADD nivel varchar(50); - --- Na tabela employees, adicione uma coluna para receber o id_salario - -ALTER TABLE employees -ADD id_salario INTEGER; \ No newline at end of file diff --git a/gabaritos/1-CRUD/3-inserir-dados_resposta.sql b/gabaritos/1-CRUD/3-inserir-dados_resposta.sql deleted file mode 100644 index a334dfc..0000000 --- a/gabaritos/1-CRUD/3-inserir-dados_resposta.sql +++ /dev/null @@ -1,11 +0,0 @@ --- Insira 3 classes salariais na tabela salario_classe -INSERT INTO salario_classe(id_salario, salario, nivel) -VALUES -(1, 3500, 'estagiária'), -(2, 4700, 'iniciante - grade 1'), -(3, 5300, 'iniciante - grade 2'); - --- Insira 1 nova classe salarial, sem declarar o atributo id_salario -INSERT INTO salario_classe(salario, nivel) -VALUES -(6700, 'plena'); \ No newline at end of file diff --git a/gabaritos/1-CRUD/4-consultar-dados_resposta.sql b/gabaritos/1-CRUD/4-consultar-dados_resposta.sql deleted file mode 100644 index 6990903..0000000 --- a/gabaritos/1-CRUD/4-consultar-dados_resposta.sql +++ /dev/null @@ -1,15 +0,0 @@ --- Crie uma consulta que retorne apenas as colunas "Name", "Composer" e "AlbumId" da tabela "tracks" -SELECT -name, -Composer, -AlbumId -FROM tracks; - --- Repita a consulta anterior e dessa vez filtre os registros para que retornem apenas as tracks com o atributo "AlbumId" igual a 1 -SELECT -name, -Composer, -AlbumId -FROM tracks -WHERE -AlbumId = 1; \ No newline at end of file diff --git a/gabaritos/1-CRUD/5-atualizar-dados_resposta.sql b/gabaritos/1-CRUD/5-atualizar-dados_resposta.sql deleted file mode 100644 index 079237b..0000000 --- a/gabaritos/1-CRUD/5-atualizar-dados_resposta.sql +++ /dev/null @@ -1,15 +0,0 @@ --- Atualize a classe salarial para a pessoa cujo EmployeeId é igual a 6. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe -UPDATE employees -SET id_salario = 3 -WHERE EmployeeId = 6; - --- Atualize a classe salarial e o LastName da pessoa cujo EmployeeId é igual a 2. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe -UPDATE employees -SET id_salario = 4, - LastName = 'Silva' -WHERE EmployeeId = 2; - --- Atualize a classe salarial 1 para as pessoas cuja coluna id_salario continua NULL. Lembre-se que a classe salarial deve corresponder o id_salario da tabela salario_classe -UPDATE employees -SET id_salario = 1 -WHERE id_salario is NULL; \ No newline at end of file diff --git a/gabaritos/1-CRUD/6-remover-dados_resposta.sql b/gabaritos/1-CRUD/6-remover-dados_resposta.sql deleted file mode 100644 index cb6b0a8..0000000 --- a/gabaritos/1-CRUD/6-remover-dados_resposta.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Da tabela invoice, remova o invoice cujo o InvoiceID corresponda ao valor 33 -DELETE FROM invoices -WHERE InvoiceID = 33; - --- Da tabela invoice, remova todos os invoices cujo o Total seja menor do que 1 -DELETE FROM invoices -WHERE Total < 1; \ No newline at end of file diff --git a/gabaritos/2-construindo-consultas/1-operadores_resposta.sql b/gabaritos/2-construindo-consultas/1-operadores_resposta.sql deleted file mode 100644 index fd03970..0000000 --- a/gabaritos/2-construindo-consultas/1-operadores_resposta.sql +++ /dev/null @@ -1,35 +0,0 @@ --- Construa uma consulta para a tabela "invoice_items" que retorne: --- Apenas as colunas InvoiceId, TrackId e UnitPrice. - -SELECT -InvoiceId, -TrackId, -UnitPrice -FROM invoice_items; - --- Inclua nessa consulta mais três colunas, cada uma como resultado de uma operação aritmética diferente -SELECT -InvoiceId, -TrackId, -UnitPrice, -(UnitPrice + 2.11) % 2, -UnitPrice * 1.3, -UnitPrice + 2.11, -UnitPrice - 0.17, -UnitPrice / 2.5 -FROM invoice_items; - --- Incremente essa consulta utilizando a cláusula WHERE, a qual restringirá o resultado apenas para linhas cujo o InvoiceId seja maior do que 20 e menor ou igual a 30 -SELECT -InvoiceId, -TrackId, -UnitPrice, -(UnitPrice + 2.11) % 2, -UnitPrice * 1.3, -UnitPrice + 2.11, -UnitPrice - 0.17, -UnitPrice / 2.5 -FROM invoice_items -WHERE InvoiceId > 20 -AND InvoiceId <= 30; - diff --git a/gabaritos/2-construindo-consultas/2-valores-unicos-alias_resposta.sql b/gabaritos/2-construindo-consultas/2-valores-unicos-alias_resposta.sql deleted file mode 100644 index 64f6bfa..0000000 --- a/gabaritos/2-construindo-consultas/2-valores-unicos-alias_resposta.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Para a tabela "customers" crie uma consulta que retorne apenas os valores únicos da coluna Country -SELECT DISTINCT -Country -FROM -customers; - --- Na consulta anterior, adicione a coluna Company para verificar as combinações únicas entre empresas e países -SELECT DISTINCT -Country, -Company -FROM -customers; - --- Nesta mesma consulta, atribua um alias com título em português para cada coluna -SELECT DISTINCT -Country as pais, -Company as empresa -FROM -customers; \ No newline at end of file diff --git a/gabaritos/2-construindo-consultas/3-condicional_resposta.sql b/gabaritos/2-construindo-consultas/3-condicional_resposta.sql deleted file mode 100644 index a967fbb..0000000 --- a/gabaritos/2-construindo-consultas/3-condicional_resposta.sql +++ /dev/null @@ -1,13 +0,0 @@ --- Escreva uma consulta que retorne o nome por extenso dos estados brasileiros - -SELECT DISTINCT -Country as pais, -State as estado_sigla, -CASE - WHEN State = 'SP' THEN 'São Paulo' - WHEN State = 'RJ' THEN 'Rio de Janeiro' -END AS estado -FROM -customers -WHERE -Country LIKE 'Brazil'; \ No newline at end of file diff --git a/gabaritos/2-construindo-consultas/4-transformando-dados-textuais_resposta.sql b/gabaritos/2-construindo-consultas/4-transformando-dados-textuais_resposta.sql deleted file mode 100644 index c90643f..0000000 --- a/gabaritos/2-construindo-consultas/4-transformando-dados-textuais_resposta.sql +++ /dev/null @@ -1,75 +0,0 @@ --- Crie uma consulta que retorne as colunas CustomerId, FirstName, LastName e Address das pessoas consumidoras brasileiras -SELECT DISTINCT -CustomerId as id, -FirstName as nome, -LastName as sobrenome, -Address as endereco -FROM customers -WHERE -Country LIKE 'Brazil'; - --- Na consulta anterior, converta o sobrenome para letras maiúsculas -SELECT DISTINCT -CustomerId as id, -FirstName as nome, -UPPER(LastName) as sobrenome, -Address as endereco -FROM customers -WHERE -Country LIKE 'Brazil'; - --- Na consulta anterior, converta o nome para letras minúsculas -SELECT DISTINCT -CustomerId as id, -LOWER(FirstName) as nome, -UPPER(LastName) as sobrenome, -Address as endereco -FROM customers -WHERE -Country LIKE 'Brazil'; - --- Na consulta anterior, adicione uma coluna cujos os dados seja o resultado da concatenação das colunas de nome e sobrenome -SELECT DISTINCT -CustomerId as id, -LOWER(FirstName) as nome, -UPPER(LastName) as sobrenome, -LOWER(FirstName || ' ' || LastName) as nome_completo, -Address as endereco -FROM customers -WHERE -Country LIKE 'Brazil'; - --- Na consulta anterior, substitua "Av." por "Avenida" na coluna endereço -SELECT DISTINCT -CustomerId as id, -SUBSTR(FirstName,1,3) as apelido, -LOWER(FirstName) as nome, -UPPER(LastName) as sobrenome, -LOWER(FirstName || ' ' || LastName) as nome_completo, -REPLACE(Address, 'Av.', 'Avenida') as endereco -FROM customers -WHERE -Country LIKE 'Brazil'; - --- Na consulta anterior, utilize o símbolo de coringa para construir padrões textuais -SELECT DISTINCT -CustomerId as id, -SUBSTR(FirstName,1,3) as apelido, -LOWER(FirstName) as nome, -UPPER(LastName) as sobrenome, -LOWER(FirstName || ' ' || LastName) as nome_completo, -REPLACE(Address, 'Av.', 'Avenida') as endereco -FROM customers -WHERE -Country LIKE 'Bra%'; - -SELECT DISTINCT -CustomerId as id, -SUBSTR(FirstName,1,3) as apelido, -LOWER(FirstName) as nome, -UPPER(LastName) as sobrenome, -LOWER(FirstName || ' ' || LastName) as nome_completo, -REPLACE(Address, 'Av.', 'Avenida') as endereco -FROM customers -WHERE -Country LIKE '%sil'; \ No newline at end of file diff --git a/gabaritos/2-construindo-consultas/5-funcoes-agregadoras_resposta.sql b/gabaritos/2-construindo-consultas/5-funcoes-agregadoras_resposta.sql deleted file mode 100644 index 2aec4c3..0000000 --- a/gabaritos/2-construindo-consultas/5-funcoes-agregadoras_resposta.sql +++ /dev/null @@ -1,13 +0,0 @@ --- Para a tabela "invoices", crie uma consulta que retorne o país e a soma das compras realizadas nele, bem como o valor da compra mínima e máxima, a quantidade de compras realizadas e o ticket médio de cada compra. - -SELECT -BillingCountry as pais, -SUM(Total) as soma_compras, -COUNT(Total) as qnt_compras_realizadas, -MIN(Total) as menor_compra, -MAX(Total) as maior_compra, -ROUND(AVG(Total), 2) as ticket_medio -FROM -invoices -WHERE -BillingCountry = 'Austria'; \ No newline at end of file diff --git a/gabaritos/3-consultando-dados-varias-tabelas/1-tipos-joins_resposta.sql b/gabaritos/3-consultando-dados-varias-tabelas/1-tipos-joins_resposta.sql deleted file mode 100644 index c4d8063..0000000 --- a/gabaritos/3-consultando-dados-varias-tabelas/1-tipos-joins_resposta.sql +++ /dev/null @@ -1,4 +0,0 @@ --- Crie uma consulta para realizar um left join com as tabelas "albums" e "artists" -SELECT * -FROM albums -LEFT JOIN artists ON albums.ArtistId = artists.ArtistId; \ No newline at end of file diff --git a/gabaritos/3-consultando-dados-varias-tabelas/2-join-e-with_resposta.sql b/gabaritos/3-consultando-dados-varias-tabelas/2-join-e-with_resposta.sql deleted file mode 100644 index e7227af..0000000 --- a/gabaritos/3-consultando-dados-varias-tabelas/2-join-e-with_resposta.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists" -SELECT -tra.TrackId as id, -tra.Name as musica, -alb.Title as album, -art.Name as artista -FROM -tracks AS tra -INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId -INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId -WHERE -art.name LIKE '%Gil'; - --- Refatore a consulta anterior usando a cláusula "with" e verifique o total de músicas existente na base de terminado artista, ex: Caetano Veloso -WITH musicas AS( -SELECT -tra.TrackId as id, -tra.Name as musica, -alb.Title as album, -art.Name as artista -FROM -tracks AS tra -INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId -INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId) - -SELECT -artista, -COUNT(musica) as qnt_total_musicas -FROM -musicas -WHERE -artista LIKE 'Caetano%'; \ No newline at end of file diff --git a/gabaritos/4-refinando-consulta/1-filtro_resposta.sql b/gabaritos/4-refinando-consulta/1-filtro_resposta.sql deleted file mode 100644 index d857687..0000000 --- a/gabaritos/4-refinando-consulta/1-filtro_resposta.sql +++ /dev/null @@ -1,13 +0,0 @@ --- Crie uma consulta para realizar inner join com as tabelas "tracks", "albums" e "artists". Além disso, apresente apenas as músicas do artista que contenha "Nação" no nome e título do álbum que não seja "Da Lama Ao Caos" -SELECT -tra.TrackId as id, -tra.Name as musica, -alb.Title as album, -art.Name as artista -FROM -tracks AS tra -INNER JOIN albums AS alb ON tra.AlbumId = alb.AlbumId -INNER JOIN artists AS art ON art.ArtistId = alb.ArtistId -WHERE -artista LIKE '%Nação%' -AND album NOT LIKE 'Da Lama Ao Caos'; \ No newline at end of file diff --git a/gabaritos/4-refinando-consulta/2-group-by-e-having_resposta.sql b/gabaritos/4-refinando-consulta/2-group-by-e-having_resposta.sql deleted file mode 100644 index cbeb936..0000000 --- a/gabaritos/4-refinando-consulta/2-group-by-e-having_resposta.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Crie uma consulta usando as tabelas "invoices" e "customers" cujo o resultado seja o total de gastos por cliente -SELECT -cus.CustomerId as id_cliente, -cus.FirstName as nome, -SUM(inv.Total) as total_gasto -FROM -invoices AS inv -INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId -GROUP BY id_cliente; - --- Na consulta anterior, insira um filtro para que apresente apenas os clientes que gastaram mais de R$30 -SELECT -cus.CustomerId as id_cliente, -cus.FirstName as nome, -SUM(inv.Total) as total_gasto -FROM -invoices AS inv -INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId -GROUP BY id_cliente -HAVING SUM(inv.Total) >= 40; - --- Na consulta anterior, insira uma coluna que informe a compra de maior valor feita por cada cliente -SELECT -cus.CustomerId as id_cliente, -cus.FirstName as nome, -MAX(inv.Total) as compra_maior_valor, -SUM(inv.Total) as total_gasto -FROM -invoices AS inv -INNER JOIN customers AS cus ON inv.CustomerId = cus.CustomerId -GROUP BY id_cliente -HAVING SUM(inv.Total) >= 40; \ No newline at end of file diff --git a/gabaritos/4-refinando-consulta/3-ordenando-e-limitando_resposta.sql b/gabaritos/4-refinando-consulta/3-ordenando-e-limitando_resposta.sql deleted file mode 100644 index bb2d01e..0000000 --- a/gabaritos/4-refinando-consulta/3-ordenando-e-limitando_resposta.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Desenvolva uma consulta para a tabela "customers" que retorne apenas 10 linhas -SELECT -CustomerId as id, -FirstName as nome, -Country as pais -FROM -customers -LIMIT 10; - --- Usando a consulta anterior, ordene a coluna "Country" de forma crescente e "FirstName" de forma decrescente -SELECT -CustomerId as id, -FirstName as nome, -Country as pais -FROM -customers -ORDER BY -pais ASC, -nome DESC -LIMIT 10; - --- Continue usando a consulta anterior, dessa vez retorne 10 resultados, no entando ignore as 3 primeiras linhas -SELECT -CustomerId as id, -FirstName as nome, -Country as pais -FROM -customers -ORDER BY -pais ASC, -nome DESC -LIMIT 10 OFFSET 3; \ No newline at end of file