sql >> Database >  >> RDS >> Database

Hoe verdiepingen tellen in SQL

Probleem:

U wilt een getal naar beneden afronden op het dichtstbijzijnde gehele getal.

Voorbeeld:

Onze database heeft een tabel met de naam werknemer met gegevens in de volgende kolommen:id , first_name , last_name , en hours_worked (voor de huidige maand).

id voornaam achternaam hours_worked
1 Alan Watson 95
2 Lisa Zwart 225
3 Laura Willems 104

Laten we de voor- en achternaam van elke werknemer weergeven, samen met het aantal dagen dat ze hebben gewerkt. Aangezien de tabel alleen het aantal gewerkte uren laat zien en niet de dagen, moeten we deze waarde zelf berekenen.

Voor dit probleem gaan we ervan uit dat elke werknemer een standaard werkdag van acht uur heeft zonder onregelmatigheden. Daarom is het aantal gewerkte dagen het aantal uren gedeeld door acht.

Oplossing:

SELECT last_name, first_name, FLOOR(hours_worked/8) AS days_worked
FROM employee;

De zoekopdracht retourneert de voor- en achternaam van elke werknemer en het aantal dagen dat ze deze maand hebben gewerkt.

achternaam voornaam days_worked
Watson Alan 11
Zwart Lisa 28
Willems Laura 13

Discussie:

Vloeren is een eenvoudige wiskundige bewerking die een getal neemt en naar beneden afrondt op het dichtstbijzijnde gehele getal. De vloer van 5 is bijvoorbeeld zelf 5, terwijl de vloer van 5.1 ook 5 is. Een ander voorbeeld is dat de vloer van 4.9 4 is.

In SQL gebruiken we de functie FLOOR. Het heeft het getal nodig om af te ronden en retourneert het dichtstbijzijnde gehele getal dat kleiner is dan of gelijk is aan het getal. In ons voorbeeld moet het aantal gewerkte dagen een geheel getal zijn, geen getal met drijvende komma. Daarom gebruikten we (FLOOR(hours_worked/8) ).


  1. Hoe records willekeurig uit de Oracle-database te halen?

  2. Hoe vind ik dubbele waarden in een tabel in Oracle?

  3. Islands T-SQL-uitdaging

  4. MariaDB SUBSTR() uitgelegd