Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng hàm MIN() trong Android SQLite

Giới thiệu

Hàm tổng hợp MIN() trả về giá trị nhỏ nhất của một cột. Demo tìm mức lương thấp nhất trong bảng.

Các bước

Bước 1 & 2: Project & Layout

Giao diện chuẩn: Tên, Lương, 4 Button, ListView.

Bước 3: MainActivity.java

Xử lý CRUD tương tự, ListView hiển thị kết quả MIN.

Bước 4: DatabaseHelper.java - Truy vấn MIN

package com.example.andy.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

class DatabaseHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "salaryDatabase5";
    static final String TABLE = "SalaryDetails";

    DatabaseHelper(Context ctx) { super(ctx, DB_NAME, null, 1); }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // Cột salary kiểu money (TEXT) nhưng so sánh như số
        db.execSQL("CREATE TABLE " + TABLE +
                "(id INTEGER PRIMARY KEY, name TEXT, salary TEXT, datetime DEFAULT CURRENT_TIMESTAMP)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int o, int n) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }

    boolean insert(String n, String s) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", n); cv.put("salary", s);
        db.replace(TABLE, null, cv);
        return true;
    }

    ArrayList getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList list = new ArrayList<>();

        // Lấy bản ghi có salary nhỏ nhất (MIN)
        Cursor res = db.rawQuery(
            "SELECT (id || ' : ' || name || ' : ' || MIN(salary) || ' : ' || datetime) AS fullname FROM " + TABLE, null);

        while (res.moveToNext()) {
            list.add(res.getString(res.getColumnIndex("fullname")));
        }
        return list;
    }

    boolean update(String n, String s) {
        getWritableDatabase().execSQL("UPDATE " + TABLE + " SET name='" + n + "', salary='" + s + "'");
        return true;
    }

    boolean delete() {
        getWritableDatabase().execSQL("DELETE FROM " + TABLE);
        return true;
    }
}

Lưu ý quan trọng

Truy vấn SELECT ..., MIN(salary) ... không có GROUP BY sẽ trả về một dòng duy nhất chứa giá trị MIN của toàn bảng. Các cột khác (id, name, datetime) sẽ lấy từ dòng đầu tiên (không xác định). Để đúng chuẩn, nên dùng subquery hoặc GROUP BY.

Kết quả

Cách sử dụng hàm MIN() trong Android SQLite

Hiển thị bản ghi có mức lương thấp nhất.