Minhas soluções para os Katas (exercícios) de SQL do CodeWars desde 17 de Fevereiro de 2022, quando passei a usar a plataforma para praticar SQL Server.
Codewars é uma plataforma que te ajuda a aprender, treinar e melhorar suas habilidades de código resolvendo exercícios (chamados de Katas) de programação de vários tipos e níveis de dificuldade. Você escolhe como quer aprender. Quer resolver exercícios cada vez mais desafiadores? Ou prefere treinar através de repetição e melhorando suas soluções? Depois de resolver um Kata, você pode comparar sua solução com a de outros usuários e, com isso, aprender com elas ou ensinar usuários menos experientes respondendo as dúvidas deles.
Ranks são usados para indicar a proficiência de usuários e dificuldades dos Katas. Existem duas classes de ranks, Kyu e dan, que são divididos em 8 níveis cada. Em ordem de proficiência/dificuldade:
8 Kyu até 1 Kyu
1 Dan até 8 Dan
Por que os nomes Kyu and Dan? São termos emprestados do sistema de artes marciais japonesas, que por sua vez são emprestadas do jogo Go. Kyu (or Kyū) indica o número de graus até o nível mestre (Dan). É por isso que são contados de forma descrescente. Ao alcaçar o nível mestre, passamos a contar de forma crescente. Faixas pretas nas artes marciais são nível Dan.
SELECT
'US' as location,
*
FROM ussales
WHERE price > 50.00
UNION ALL
SELECT
'EU' as location,
*
FROM eusales
WHERE price > 50.00
ORDER BY location DESC, id;
SELECT
age,
COUNT(name) AS total_people
FROM people
GROUP BY age
HAVING COUNT(id) >= 10; /* nao pode usar o alias total_people porque o SELECT é processado depois do HAVING */
SELECT
customer.customer_id,
customer.email,
COUNT(payment.payment_id) AS payments_count,
CAST(SUM(payment.amount) AS float) AS total_amount
FROM customer
LEFT JOIN payment
ON customer.customer_id = payment.customer_id
GROUP BY customer.customer_id
ORDER BY total_amount DESC
LIMIT 10;
SELECT
CAST(n^3 AS int) AS res
FROM nums;
SELECT
CAST(s.transaction_date as date) as day,
d.name AS department,
COUNT(s.id) AS sale_count
FROM department AS d /* esse AS não faz diferença, só torna mais legível */
LEFT JOIN sale AS s
ON d.id = s.department_id
GROUP BY
day,
department
ORDER BY day ASC, department ASC, sale_count DESC;
SELECT
p.id,
p.name,
COUNT(t.name) AS toy_count
FROM people AS p
LEFT JOIN toys AS t
ON p.id = t.people_id
GROUP BY p.id;
SELECT
p.pokemon_name,
p.str * m.multiplier AS modifiedStrength,
m.element
FROM pokemon p
JOIN multipliers m
ON p.element_id = m.id
WHERE modifiedStrength >= 40
ORDER BY modifiedStrength DESC;
SELECT
cbrt(number1) AS cuberoot,
ln(number2) AS logarithm
FROM decimals;
SELECT * FROM students
where tuition_received = false;
SELECT
BIT_LENGTH (name) + CHAR_LENGTH(race)
AS calculation
FROM demographics;
SELECT id, name,
POSITION(',' IN characteristics) AS comma
FROM monsters
ORDER BY comma;
SELECT * FROM books
ORDER BY copies_sold DESC
LIMIT 5;
SELECT * FROM students
WHERE
(quality1 = 'evil' AND quality2 = 'cunning')
OR
(quality1 = 'brave' AND quality2 != 'evil')
OR
(quality1 = 'studious' OR quality2 = 'intelligent')
OR
(quality1 = 'hufflepuff' OR quality2 = 'hufflepuff')
ORDER BY id ASC;
SELECT
id,
ASCII(name) AS name,
birthday,
ASCII(race) AS race
FROM demographics;
CREATE TABLE tabela ("Greeting" VARCHAR PRIMARY KEY);
INSERT INTO tabela VALUES ('hello world!');
SELECT * FROM tabela;
SELECT DISTINCT age FROM people;