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

Wybierz rekord tylko wtedy, gdy poprzedni ma niższą wartość

SELECT  a.ID, a.SerialNumber, 
        b.Remain_Toner_Black BeforeCount,
        a.Remain_Toner_Black AfterCount
FROM    
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) a
        INNER JOIN
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) b ON a.SerialNumber = b.SerialNumber AND
                a.RowNumber = b.RowNumber + 1
WHERE   b.Remain_Toner_Black < a.Remain_Toner_Black

WYJŚCIE

╔══════╦═════════════════╦═════════════╦════════════╗
║  ID  ║  SERIALNUMBER   ║ BEFORECOUNT ║ AFTERCOUNT ║
╠══════╬═════════════════╬═════════════╬════════════╣
║ 7331 ║ Z5UEBJAC900002Y ║          36 ║        100 ║
║ 7088 ║ 3960125290      ║           0 ║         93 ║
║ 7100 ║ 3960125290      ║          93 ║        100 ║
╚══════╩═════════════════╩═════════════╩════════════╝

KRÓTKIE WYJAŚNIENIE

Powyższe zapytanie generuje kolejny numer, który naśladuje ROW_NUMBER() na innych RDBS dla każdego SerialNumber uporządkowane według ID w kolejności rosnącej.

Dwa podzapytania są następnie łączone za pomocą SerialNumber i wygenerowany numer sekwencyjny. W wygenerowanym numerze wartość pierwszego podzapytania musi być równa plus jeden wartości drugiego podzapytania, aby uzyskać liczbę tonera w następnym rekordzie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz dane z tabeli połączeń w Yii2

  2. Jak ponownie wykorzystać wartości auto_increment?

  3. MySQL:wybierz * z tabeli, gdzie col IN (null, ) możliwe bez OR

  4. Procedura przechowywania nie zwraca wartości w MVC5

  5. MySQL usuwa niektóre klucze obce