Consulte o status diário de negócios de várias lojas em um determinado período de tempo, se nenhum negócio for registrado como 0

Se já existe uma tabela de lojas que contém todas as informações da loja, podemos usar essa tabela diretamente na consulta sem listar manualmente o nome de cada loja. Veja a seguir um exemplo de instrução de consulta:

Instruções SQL:

SELECT 
  dates.order_date,
  stores.store_name,
  IFNULL(SUM(orders.amount), 0) AS total_amount
FROM (
  SELECT 
    DATE_ADD('2023-03-01', INTERVAL seq DAY) AS order_date
  FROM (
    SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
  ) seq
  WHERE DATE_ADD('2023-03-01', INTERVAL seq DAY) BETWEEN '2023-03-01' AND '2023-03-08' -- 时间范围
) dates
CROSS JOIN stores
LEFT JOIN orders ON orders.order_date = dates.order_date AND orders.store_name = stores.store_name
GROUP BY dates.order_date, stores.store_name
ORDER BY dates.order_date, stores.store_name;

Na instrução de consulta acima, usamos uma operação CROSS JOIN para conectar a sequência de datas e a tabela de armazenamento para garantir que cada dia tenha um nome de armazenamento correspondente. Em seguida, usamos uma operação LEFT JOIN para unir a série de datas e armazenar a tabela com a tabela de pedidos para garantir que cada dia tenha um registro de pedido correspondente e usamos a função IFNULL para substituir os valores NULL por 0. Por fim, usamos a cláusula GROUP BY para agrupar os resultados por data e nome da loja e classificá-los em ordem crescente por data e nome da loja para obter as vendas de cada dia.
 

Acho que você gosta

Origin blog.csdn.net/CSH__/article/details/129604672
Recomendado
Clasificación