mysql - вычислить разницу между двумя датами

Вы всегда можете создать уникальный индекс, который заставит MongoDB отклонить конфликтующее сохранение. Рассмотрим следующее, выполненное с использованием оболочки mongodb:

> db.getCollection("test").insert ({a:1, b:2, c:3})
> db.getCollection("test").find()
{ "_id" : ObjectId("50c8e35adde18a44f284e7ac"), "a" : 1, "b" : 2, "c" : 3 }
> db.getCollection("test").ensureIndex ({"a" : 1}, {unique: true})
> db.getCollection("test").insert({a:2, b:12, c:13})      # This works
> db.getCollection("test").insert({a:1, b:12, c:13})      # This fails
E11000 duplicate key error index: foo.test.$a_1  dup key: { : 1.0 }
0
задан Bhuvanesh 2 March 2019 в 10:22
поделиться

3 ответа

это будет работать;

select distinct a.table_name,(a.rows-b.rows) diff from table_growth a,table_growth b 
where a.table_name=b.table_name;
0
ответ дан nikhil sugandh 2 March 2019 в 10:22
поделиться

Ваш второй запрос находится на правильном пути, но условие соединения частично отключено. Вы должны утверждать, что имена таблиц, а не идентификаторы, совпадают:

SELECT
    x.table_name,
    (x.rows - y.rows) AS diff
FROM table_growth x
INNER JOIN table_growth y
    ON x.table_name = y.table_name and
       DATE(y.timestamp) = '2019-03-02'
WHERE
    DATE(x.timestamp) = '2019-03-01';

Примечание: ваш текущий вывод немного неоднозначен, потому что не ясно, какое значение rows будет первым в разнице, или если возможно, вы хотите сообщить абсолютное значение.

0
ответ дан Tim Biegeleisen 2 March 2019 в 10:22
поделиться

Если у вас есть только одна строка на дату, то это может быть самый быстрый подход:

SELECT g.table_name,
       SUM(CASE WHEN DATE(g.timestamp) = '2019-03-02'
                THEN g.rows 
                WHEN DATE(g.timestamp) = '2019-03-01'
                THEN -g.rows
                ELSE 0
           END) as diff
FROM dbadmin.table_growth g
WHERE g.timestamp >= '2019-03-01' AND
      g.timestamp < '2019-03-03'
GROUP BY g.table_name;

В частности, это может использовать индекс на table_growth(timestamp, table_name, rows).

0
ответ дан Gordon Linoff 2 March 2019 в 10:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: