Bearbeiten Sie zwei Datenspalten als neue Spalten in SQL

Bearbeiten Sie zwei Datenspalten als neue Spalten in SQL

Wie unten dargestellt:

wähle a1,a2,a1+a2 a,a1*a2 b,a1*1.0/a2 c aus bb_sb

Addieren Sie die Spalten a1 und a2 der Tabelle a, um eine neue Spalte a zu bilden, und multiplizieren Sie die Spalten a1 und a2, um eine neue Spalte b zu bilden. Hinweis:

Bei der Division muss eine Typkonvertierung durchgeführt werden, sonst ist das Ergebnis 0.

wähle a.a1,b.b1,a.a1+b.b1 a aus bb_sb a, bb_cywzbrzb b

Dies ist eine Operation zwischen Spalten zweier verschiedener Tabellen.

Ergänzendes Wissen: SQL-Anweisung zum Berechnen der Differenz zwischen derselben Attributspalte in verschiedenen Datensätzen

Die spezifische Struktur der verwendeten Tabelle ist in der folgenden Abbildung dargestellt

Der Primärschlüssel in der Tabelle ist (Kennzeichen+aktuelleUhrzeit)

Die umzusetzende Abfrage lautet:

Fragen Sie bei einem gegebenen Nummernschild und einem Abfragezeitintervall die Differenz in currentTime der im gegebenen Zeitintervall enthaltenen Datensätze ab, berechnen Sie das Produkt aus AverageSpeed ​​und der Differenz, ermitteln Sie die höchste Geschwindigkeit (HighestSpeed) während dieses Zeitraums und teilen Sie sie entsprechend in verschiedene Typwerte auf. –> (Typwert hat nur zwei Werte 0 und 1)

Die Grundidee besteht darin, dass zunächst die Differenz in der aktuellen Zeit desselben Kennzeichens (d. h. desselben Fahrzeugs) unter demselben Typ innerhalb eines bestimmten Zeitintervalls ermittelt werden kann, z. B. die Differenz in der aktuellen Zeit zweier benachbarter Datensätze, die nach aktueller Zeit sortiert sind. Nachdem dies ermittelt wurde, kann der Rest durch Aggregationsfunktionen ermittelt werden.

Wir nehmen das Kennzeichen 京A111111 als Beispiel und gestalten den Testfall wie in der folgenden Abbildung dargestellt.

Es ist ersichtlich, dass für das Fahrzeug mit dem Kennzeichen 京A111111 6 Datensätze vorhanden sind, davon 2 Datensätze mit Typ 0 und 4 Datensätze mit Typ 1.

Wir berechnen zunächst die Zeitdifferenz und die SQL-Anweisung lautet wie folgt:

WÄHLEN Sie ein Kennzeichen, 
  a.aktuelleZeit, 
  ein Typ, 
  a.Durchschnittsgeschwindigkeit, 
  a.höchste Geschwindigkeit, 
  aktuelleZeit - (WÄHLEN Sie aktuelleZeit 
      VON carmultispeedinfo 
      WO Kennzeichen = a.Kennzeichen 
        UND Typ = a.Typ 
        UND aktuelleZeit < a.aktuelleZeit 
      ORDER BY aktuelle Zeit DESC 
      LIMIT 1)AS Zeitdifferenz 
VON carmultispeedinfo ein

Über Navicat können Sie die Abfrageergebnisse wie in der folgenden Abbildung anzeigen:

Indem Sie überprüfen, ob der Timediff-Wert korrekt ist, können Sie darauf basierend Inhalt hinzufügen.

Die vollständige SQL-Anweisung lautet wie folgt:

SELECT Sum(aa.averagespeed * aa.timediff) AS Meilendifferenz, 
  Max(aa.höchsteGeschwindigkeit) AS HöchsteGeschwindigkeit, 
  Summe(aa.timediff) AS timediff, 
  aa.Typ 
VON (Wählen Sie ein Kennzeichen aus, 
    a.aktuelleZeit, 
    ein Typ, 
    a.Durchschnittsgeschwindigkeit, 
    a.höchste Geschwindigkeit, 
    aktuelleZeit - (WÄHLEN Sie aktuelleZeit 
        VON carmultispeedinfo 
        WO Kennzeichen = a.Kennzeichen 
          UND Typ = a.Typ 
          UND aktuelleZeit < a.aktuelleZeit 
        ORDER BY aktuelle Zeit DESC 
        LIMIT 1) AS Zeitdifferenz 
  VON carmultispeedinfo a)aa 
WO aa.Kennzeichen = "A111111" 
  UND aa.currenttime >= 1521790124670 
  UND aa.aktuelleZeit <= 1521790125685 
GROUP BY aa.Typ

Die Ergebnisse sind wie folgt:

Nach der Überprüfung erhalten wir das gewünschte Ergebnis. Ersetzen Sie dann einfach das SQL, das der Mybatis-Mapper-Datei entspricht. <Aufzeichnung, Memo> Ich werde in Zukunft weitere Updates veröffentlichen, nachdem ich ein tieferes Verständnis habe. Vielen Dank an alle, ich hoffe, es kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So aktualisieren Sie dasselbe Feld mehrerer Datensätze in MySQL stapelweise auf unterschiedliche Werte
  • MySQL SQL-Anweisung zum Suchen doppelter Daten basierend auf einem oder mehreren Feldern
  • MySQL berechnet die Anzahl der Tage, Monate und Jahre zwischen zwei Daten

<<:  12 Arten der Komponentenkommunikation in Vue2

>>:  Mehrere Möglichkeiten zum Herunterfahren des Hyper-V-Dienstes unter Windows 10

Artikel empfehlen

Fallstudie zu JavaScript-Ereignisschleifen

Ereignisschleife in js Da JavaScript ein Single-T...

Detaillierte Erklärung zum effizienten Importieren mehrerer SQL-Dateien in MySQL

MySQL bietet mehrere Möglichkeiten, mehrere SQL-D...

Die detaillierteste Methode zur Installation von Docker auf CentOS 8

Installieren Sie Docker unter CentOS 8 Offizielle...

Eine kurze Analyse von MySQL-Sperren und -Transaktionen

MySQL selbst wurde auf Basis des Dateisystems ent...

Zusammenfassung der neuen Verwendung von vi (vim) unter Linux

Ich benutze den vi-Editor seit mehreren Jahren, h...

Zusammenfassung der Verwendung von clipboard.js

Inhaltsverzeichnis (1) Einleitung: (2) Zum Kopier...

Tutorial zur Installation von MySQL 8.0.11 mit RPM unter Linux (CentOS7)

Inhaltsverzeichnis 1. Installationsvorbereitung 1...

Vue nutzt Amap zur Realisierung der Stadtpositionierung

In diesem Artikel wird der spezifische Code von V...