Ebben a rendkívül rövid blogbejegyzésben arról fogok értekezni, hogyan lehet osztályközös lekérdezést létrehozni SQL nyelven. A példához MsSQL-t használok majd, de mivel az SQL szintaxisok rendkívül hasonlóak, így ezt bármelyik SQL "dialektusban" meg lehet oldani.
Itt is van a rendkívül profán lekérdezés:
SELECT
amount / 200000 * 200000 AS BinStart,
amount / 200000 * 200000 + 199999 AS BinEnd,
COUNT(*) AS Count
FROM Salaries
WHERE end_date IS NULL
GROUP BY
amount / 200000;
A tábla maga így néz ki:
CREATE TABLE Salaries (
salary_id int PRIMARY KEY IDENTITY(1, 1),
employee_id int,
amount int,
start_date date,
end_date date,
registered datetime DEFAULT (GETDATE())
)
Hogyan működik a lekérdezés?
Az alábbi sor alakítja ki az osztályközöket úgy, hogy az "amount" oszlop értékét osztja, majd megszorozza az osztályköz hosszával:
amount / 200000 * 200000 AS BinStart
Ha belegondolunk, itt nyilván egy egész számot fogunk kapni, ami megmondja, hogy hány egészszer van meg a fizetésben az osztályköz hosszával egyenlő szám. Azért nem szükséges a FLOOR alkalmazása, mert az MS SQL erősen típusos, és integert osztunk integerrel. Ez viszont nem azt jelenti, hogy más adatbázisrendszernél ez így működik. MySQL-ben például szükséges lenne a FLOOR alkalmazása.
Ha az eredményt beszorozzuk az osztályköz hosszával, akkor nyilván n-szer kapjuk meg az annak nagyságát. Az osztályköz felső határát az összeadás biztosítja. A "GROUP BY" művelet segítségével csoportosítunk aszerint, hogy hányszor egészszer van meg a fizetésben az osztályköz hossza.
_A "WHERE end_date IS NULL" azért került oda, mert a táblában az aktuális fizetésnél az "end_date" mező értéke null. _
United States
NORTH AMERICA
Related News
How Braze’s CTO is rethinking engineering for the agentic area
10h ago
Amazon Employees Are 'Tokenmaxxing' Due To Pressure To Use AI Tools
21h ago

Implementing Multicloud Data Sharding with Hexagonal Storage Adapters
15h ago

DeepMind’s CEO Says AGI May Be ~4 Years Away. The Last Three Missing Pieces Are Not What Most People Think.
15h ago

CCSnapshot - A Claude Code Configs Transfer Tool
21h ago