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

Grundlegendes Installationstutorial zum Dekomprimieren von MySQL-Paketen

Da ich auf einen neuen Computer gewechselt bin, m...

Vue Grundlagen Listener Detaillierte Erklärung

Inhaltsverzeichnis Was ist ein Listener in Vue? V...

Einige etwas komplexere Verwendungsbeispielcodes in MySQL

Vorwort Ich glaube, dass die Syntax von MySQL nic...

Zusammenfassung von fünf Befehlen zum Überprüfen des Swap-Speichers in Linux

Vorwort Unter Linux können zwei Arten von Swap-Sp...

Tutorial zur Installation und Verwendung des Elasticsearch-Tools cerebro

Cerebro ist eine Weiterentwicklung des Elasticsea...

CSS-Vererbungsmethode

Gegeben sei ein Div mit folgendem Hintergrundbild...

Detailliertes Tutorial zum Löschen von Linux-Benutzern mit dem Befehl userdel

Was ist Serdel userdel ist ein Low-Level-Tool zum...

Detaillierte Erklärung des Sticky Position-Attributs in CSS

Beim Entwickeln mobiler Apps stoßen Sie häufig au...

Tutorial zum Ändern des Root-Passworts in MySQL 5.7

Versionsupdate, das Passwortfeld im Originalbenut...

Docker-Installationsschritte für Redmine

Laden Sie das Image herunter (optionaler Schritt,...

Beispielcode zur Eingabe des Kennzeichens und der Provinzkürzel in html

Das Prinzip besteht darin, zuerst ein Div mit ein...

Analyse der Verwendung und des Prinzips der Docker Swarm-Clusterverwaltung

Schwarmclusterverwaltung Einführung Docker Swarm ...