sql >> Databasteknik >  >> RDS >> Mysql

tabelldesign + SQL-fråga

Jag förstår inte varför du skulle behöva den syntetiska nyckeln, så jag använder den här tabellen istället:

CREATE TABLE foodbar (
  user_id     INT NOT NULL
, created_at  date not null
, weight      double not null
, PRIMARY KEY (user_id, created_at)
);
SELECT curr.user_id, curr.weight - prev.weight
FROM foodbar curr, foodbar prev
WHERE curr.user_id = prev.user_id
  AND curr.created_at = CURRENT_DATE
  AND prev.created_at = CURRENT_DATE - INTERVAL '7 days'
;

den aritmetiska datumsyntaxen är förmodligen fel men du förstår tanken

se ovan, lägg till ORDER BY curr.weight - prev.weight DESC och LIMIT N

för de två sista frågorna:spekulera inte, undersök utförandeplanerna. (postgresql har EXPLAIN ANALYZE , vet inte om mysql) kommer du förmodligen att behöva indexera kolumner som deltar i WHERE och JOIN , inte de som bildar resultatuppsättningen.



  1. Skapa en partitionerad tabell i SQL Server (T-SQL)

  2. Introduktion till PL/SQL Bulk Collect i Oracle Database

  3. Hur man får distinkta poster från en tabell i SQL Server - SQL Server / TSQL Tutorial 112

  4. vilken ip AWS lambdafunktion använder?