La solicitud

De Laura Bennett, Directora de Finanzas
Tu objetivo
Desde employees, devuelve employee_id, full_name (first_name, un espacio y luego last_name, como un solo valor de texto), department, salary y monthly_salary (salary dividido entre 12, redondeado a 2 decimales). Incluye a todos los empleados.
- Lee de la tabla
employeespendiente - Muestra exactamente
employee_idfull_namedepartmentsalarymonthly_salarypendiente - 60 filaspendiente
Tu consulta
Cargando el editor…
Solución de referencia
| employee_id | first_name | last_name | department | title |
|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer |
| 2 | Robert | Kim | Executive | Chief Operating Officer |
| 3 | Megan | Collins | Sales | Head of Sales |
| 4 | Chloe | Gutierrez | Sales | Account Executive |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Laura, y por qué
Tablas
Datos de la tienda Harbor & Pine, listos para consultar.
employees60 filas · 8 columnas
employee_idintegerfirst_namevarcharlast_namevarchardepartmentvarchartitlevarcharmanager_idintegerhire_datedatesalaryinteger
| employee_id | first_name | last_name | department | title | manager_id | hire_date | salary |
|---|---|---|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer | NULL | 2016-03-01 | 285000 |
| 2 | Robert | Kim | Executive | Chief Operating Officer | 1 | 2017-01-09 | 235000 |
| 3 | Megan | Collins | Sales | Head of Sales | 1 | 2018-04-16 | 172000 |
| 4 | Chloe | Gutierrez | Sales | Account Executive | 3 | 2020-01-21 | 72000 |
| 5 | Frank | Bell | Sales | Account Executive | 3 | 2023-05-21 | 73000 |
customers2,018 filas · 9 columnas
customer_idintegerfirst_namevarcharlast_namevarcharemailvarcharcityvarcharstatevarcharsignup_datedatesegmentvarcharreferral_sourcevarchar
| customer_id | first_name | last_name | city | state | signup_date | segment | referral_source | |
|---|---|---|---|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco | CA | 2022-06-02 | consumer | search |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta | GA | 2022-06-02 | consumer | NULL |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles | CA | 2022-06-04 | business | NULL |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle | WA | 2022-06-06 | business | |
| 5 | Kyle | Jimenez | kjimenez27@yahoo.com | Indianapolis | IN | 2022-06-07 | consumer | NULL |
products120 filas · 8 columnas
product_idintegernamevarcharcategoryvarcharsubcategoryvarcharunit_pricedecimalunit_costdecimallaunched_ondateis_activeboolean
| product_id | name | category | subcategory | unit_price | unit_cost | launched_on | is_active |
|---|---|---|---|---|---|---|---|
| 101 | Vale Velvet Loveseat | Furniture | Sofas | 1659.00 | NULL | 2023-09-11 | true |
| 102 | Alder Oak Coffee Table | Furniture | Tables | 919.00 | 503.50 | 2024-05-16 | true |
| 103 | Orchard Rattan Dining Chair | Furniture | Chairs | 789.00 | 429.87 | 2023-05-27 | true |
| 104 | Upland Oak Bookcase | Furniture | Storage | 429.00 | 214.70 | 2022-12-20 | true |
| 105 | Avery Leather Bed Frame | Furniture | Beds | 449.00 | 232.70 | 2021-08-31 | true |
orders12,000 filas · 7 columnas
order_idintegercustomer_idintegerorder_datetimestampstatusvarcharchannelvarcharshipping_feedecimalcoupon_codevarchar
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code |
|---|---|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NULL |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NULL |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace | 4.99 | WELCOME10 |
| 1005 | 82 | 2023-01-02 11:43:36 | completed | web | 0.00 | WELCOME10 |
order_items30,338 filas · 6 columnas
order_item_idintegerorder_idintegerproduct_idintegerquantityintegerunit_pricedecimaldiscount_pctdecimal
| order_item_id | order_id | product_id | quantity | unit_price | discount_pct |
|---|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 | 0.00 |
| 2 | 1001 | 154 | 3 | 11.99 | 0.00 |
| 3 | 1002 | 154 | 4 | 11.99 | 0.00 |
| 4 | 1002 | 194 | 1 | 149.00 | 0.00 |
| 5 | 1002 | 193 | 2 | 19.99 | 0.00 |
returns1,673 filas · 5 columnas
return_idintegerorder_item_idintegerreturned_ondatereasonvarcharrefund_amountdecimal
| return_id | order_item_id | returned_on | reason | refund_amount |
|---|---|---|---|---|
| 1 | 14 | 2023-01-10 | damaged | 83.69 |
| 2 | 42 | 2023-01-10 | wrong_item | 19.99 |
| 3 | 105 | 2023-01-14 | wrong_item | 10.99 |
| 4 | 24 | 2023-01-16 | changed_mind | 26.99 |
| 5 | 126 | 2023-01-16 | late | 20.99 |
web_sessions40,000 filas · 7 columnas
session_idintegercustomer_idintegerstarted_attimestampdevicevarcharsourcevarcharpages_viewedintegerconvertedboolean
| session_id | customer_id | started_at | device | source | pages_viewed | converted |
|---|---|---|---|---|---|---|
| 1 | NULL | 2023-01-01 23:02:24 | mobile | paid | 1 | false |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid | 1 | false |
| 3 | NULL | 2023-01-01 16:55:46 | desktop | direct | 7 | false |
| 4 | NULL | 2023-01-01 12:43:28 | mobile | organic | 3 | false |
| 5 | NULL | 2023-01-01 13:06:21 | mobile | social | 2 | false |
marketing_spend3,276 filas · 3 columnas
spend_datedatechannelvarcharamountdecimal
| spend_date | channel | amount |
|---|---|---|
| 2023-01-01 | paid | 492.99 |
| 2023-01-01 | 37.38 | |
| 2023-01-01 | social | 200.53 |
| 2023-01-02 | paid | 709.13 |
| 2023-01-02 | 64.13 |
La lección
Este ticket usa los movimientos del nivel del margen, en una tabla nueva: employees, una fila por persona
en Harbor & Pine, con un salary anual en dólares enteros. Dos columnas se construyen en lugar de elegirse:
una a partir de texto y otra a partir de números.
Pegar texto y hacer cuentas en la lista de SELECT
|| es el operador de SQL que une valores de texto de extremo a extremo. Pon un espacio literal entre los nombres,
o quedarán pegados. La aritmética funciona igual, una fila a la vez:
SELECT
first_name || ' ' || last_name AS full_name,
salary,
ROUND(salary / 12.0, 2) AS monthly_salary
FROM employees;
Las dos primeras filas son Catherine Hale, 285,000 al año y 23,750 al mes, y Robert Kim, 235,000 al
año y 19,583.33 al mes. CONCAT(first_name, ' ', last_name) da el mismo texto y está
disponible en casi todas las bases de datos.
salary / 12.0 usa 12.0 a propósito. DuckDB, el motor de este juego, devuelve un decimal con
salary / 12 de todos modos, pero varias bases de datos descartan el resto cuando ambos lados son enteros.
Escribir 12.0 hace que la división sea decimal en todas partes, así que la consulta sobrevive al pegarla en el
almacén de datos de la empresa.
Errores comunes
- Concatenar una columna que puede ser NULL. Con
||, un NULL hace que toda la cadena sea NULL. Aquí no falta el nombre de ningún empleado, pero los próximos niveles tratan este caso. - Redondear demasiado pronto. Redondea una sola vez, en la columna final. Una cifra mensual redondeada y multiplicada de vuelta por 12 se aleja del salario real.
- Escribir
first_name + ' ' + last_name. En DuckDB y Postgres+es solo para números, así que la base de datos intenta sumar texto y reporta un error. Usa||oCONCATpara el texto. - Llamar
namea la columna nueva. Funciona, perofull_namedice lo que contiene, y la tabla products ya tiene una columnanameque significa otra cosa. - Quitar la columna original. Mantén
salaryjunto amonthly_salary, para que quien lea pueda comprobar la cuenta de cualquier fila a simple vista. Laura pidió ambas a propósito.
En SQL Server
SQL Server une texto con + (o CONCAT), y salary / 12 con una columna INT se trunca a un número
entero allí:
SELECT FirstName + ' ' + LastName AS FullName,
ROUND(Salary / 12.0, 2) AS MonthlySalary
FROM Employees; ¡Linterna encendida!
Practicaste: select columnsexpressionsconcatenationaliasround
- Resuelto
- Sin pistas
- Al primer intento
