Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Łączna suma MySQL pogrupowana według daty

Nowa odpowiedź

Na początku nie rozumiałem, że próbujesz zrobić sumę biegową. Oto jak by to wyglądało:

SET @runningTotal = 0;
SELECT 
    e_date,
    num_interactions,
    @runningTotal := @runningTotal + totals.num_interactions AS runningTotal
FROM
(SELECT 
    DATE(eDate) AS e_date,
    COUNT(*) AS num_interactions
FROM example AS e
GROUP BY DATE(e.Date)) totals
ORDER BY e_date;

Oryginalna odpowiedź

Możesz otrzymywać duplikaty z powodu dołączenia. Może e1 ma więcej niż jedno dopasowanie dla niektórych wierszy, co zawyża twoją liczbę. Albo to, albo porównanie w twoim sprzężeniu jest również porównywaniem sekund, co nie jest tym, czego oczekujesz.

W każdym razie, zamiast dzielić pole daty i godziny na dni i miesiące, po prostu usuń z niego czas. Oto jak to zrobić.

SELECT
   DATE(e.Date) AS e_date,
   count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON DATE(e1.Date) <= DATE(e.Date)
GROUP BY DATE(e.Date);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj Apache, MySQL 8 lub MariaDB 10 i PHP 7 na CentOS 7

  2. Czy mysql_real_escape_string wystarczy do Anti SQL Injection?

  3. Czy jest coś nie tak ze złączeniami, które nie używają słowa kluczowego JOIN w SQL lub MySQL?

  4. Dlaczego Magento miałoby nie uratować klienta po wygenerowaniu identyfikatora?

  5. JSON_STORAGE_FREE() — dowiedz się, ile miejsca na dysku zostało zwolnione po aktualizacji dokumentu JSON w MySQL