Preguntas de la entrevista de MySql VIP: 1398. Clientes que compraron el producto A y el producto B pero no compraron el producto C + 1596. El producto pedido con más frecuencia por cada cliente +1421. Consulta de valor actual neto

Reimpresión:
Descargo de responsabilidad: Si violé los derechos de alguien, comuníquese conmigo y lo eliminaré.
Bienvenidos expertos para rociarme

1398. Clientes que compraron el producto A y el producto B pero no compraron el producto C

Enlace: https://leetcode-cn.com/problems/customers-who-bought-products-a-and-b-but-not-c/solution/liang-chong-fang-shi-xi-huan-jiu- xing-by-rosieisme /

Descripción del Título

Inserte la descripción de la imagen aquí
customer_id es la clave principal de esta tabla.
customer_name es el nombre del cliente.

Inserte la descripción de la imagen aquí
order_id es la clave principal de esta tabla.
customer_id es la identificación del cliente que compró el producto llamado "product_name".

El resultado de la consulta se muestra en el siguiente ejemplo.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

responder

select a.customer_id, a.customer_name 
from Customers a join Orders b on a.customer_id = b.customer_id 
group by a.customer_id 
having 
sum(b.product_name ='A') *sum(b.product_name='B') >0
and sum(b.product_name = 'C') = 0
SELECT
    customer_id, customer_name
FROM
    Customers
WHERE
    customer_id NOT IN (
        SELECT customer_id
        FROM Orders
        WHERE product_name = 'C'
    ) AND Customer_id IN (
        SELECT customer_id
        FROM Orders
        WHERE product_name = 'A'
    ) AND Customer_id IN (
        SELECT customer_id
        FROM Orders
        WHERE product_name = 'B'
    )
ORDER BY customer_id 

1596. El producto pedido con más frecuencia por cada cliente.

Enlace: https://leetcode-cn.com/problems/the-most-frequency-ordered-products-for-each-customer

Descripción del Título

Inserte la descripción de la imagen aquí
customer_id es la clave principal de
la tabla. La tabla contiene toda la información del cliente

Inserte la descripción de la imagen aquí
order_id es la clave principal de
la tabla. Esta tabla contiene la información del pedido del cliente customer_id.
Ningún cliente pedirá el mismo producto más de una vez al día.

Inserte la descripción de la imagen aquí
Escriba una declaración SQL para encontrar los productos pedidos con más frecuencia para cada cliente.

El formulario de resultados debe tener el customer_id de cada cliente que haya realizado un pedido al menos una vez, y el product_id y product_name del producto que pidió con más frecuencia.

No hay ningún requisito de pedido para los resultados devueltos.

El formato del resultado de la consulta se muestra en el siguiente ejemplo:

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Alice (cliente 1) pidió el mouse tres veces y el teclado una vez, por lo que el mouse es el artículo que Alice ordena con más frecuencia.
Bob (cliente 2) pidió el teclado una vez, pidió el mouse una vez y pidió el monitor una vez, por lo que estos son los artículos pedidos con más frecuencia por Bob.
Tom (el Cliente 3) solo ordenó dos veces la pantalla, por lo que la pantalla son los artículos pedidos con más frecuencia Tom.
Jerry (el Cliente 4) una vez pidió solo el teclado, por lo que el teclado es el más frecuente Jerry ordenó artículos.
John (el Cliente 5) no ordenó demasiado Mercancía, por lo que no incluimos a John en la tabla de resultados.

responder


select b.customer_id, c.product_id,p.product_name
from
(
    select a.customer_id, a.product_id, max(a.cnt)as maxcnt
    from
    (
        select customer_id, product_id, count(order_id)as cnt
        from orders
        group by customer_id, product_id 
    )a 
    group by a.customer_id
)b 
join
(
    select customer_id, product_id, count(order_id) as cnt
    from orders
    group by customer_id, product_id
)c
on b.customer_id = c.customer_id and b.maxcnt = c.cnt
join products p on p.product_id = c.product_id
order by b.customer_id, c.product_id 

1421. Consulta de valor actual neto

Descripción del Título

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Escriba un SQL para encontrar el valor actual neto de cada consulta en la tabla Consultas.

No hay ningún requisito de orden para la tabla de resultados.

El formato del resultado de la consulta es el siguiente:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

El valor actual neto de (7, 2018) no está en la tabla VAN, lo tratamos como 0.
El valor presente neto de todas las demás consultas se puede encontrar en la tabla VAN.

responder

select q.id, q.year, ifnull(npv,0)as npv
 from queries q left join npv n on q.id = n.id and q.year = n.year
 order by q.id, q.year
# Write your MySQL query statement below
select
    q.id,
    q.year,
    ifnull(npv,0) npv
from
    Queries q
    left join
    NPV n using(id,year); 

Supongo que te gusta

Origin blog.csdn.net/qq_45531729/article/details/112333852
Recomendado
Clasificación