Join Bill Weinman for an in-depth discussion in this video Integer division and remainders, part of SQL Essential Training (2014).
When performing division operations on integer values, the results will always be integers and the results may not always be what you expect. We're going to be using the in-memory database for this lesson and we're going to start by dividing 1 divided by 2 like that. And I'll go ahead and press Go, and you see the result is 0. We all know 1 divide by 2 is 0.5 or 1 / 2. And so, this is not really the result that we would expect. The result is like this because these are both integers and so the result is an integer, there's no way to represent 1 / 2 with an integer.
One way to deal with this is to type one of the literal values as a real number by adding a 0.0 at the end. So, I'll simply say 1.0 divided by 2, and now the result is 0.5, but our result is also a real number. You can also use the cast operator or the cast function. It's actually an operator that looks like a function, but that's another story. So we can cast the 1 as a real number like this.
Actually, that's not correct. It's like this, CAST (ONE AS REAL), and press Go. And we get that same result because the 1 is now a real number, just as if we had typed 1.0. This can be useful if you're performing the division on integer typed columns, and you want a real number for your result. Another way to deal with this and we're going to change our expression here a little bit. We're going to say 17 divided by 5. And we know that this result cannot be expressed as an integer and when I say Go, you see the result is 3.
3 times 5 is 15, so that can't be entirely right. Problem isn't there a remainder of 2 after this division. So, we can get that remainder by using the modulus operator, we can say 17 5 and now we have both the 3 and the remainder of 2. Some systems support a function for modulus instead of, or in addition to, the percent sign operator. Check your system documentation for details on how your system works. Integer division is different than division with real numbers.
You can get the fractional part of an integer division operation by using the modulus operator, whereby converting one or more of your operands to a real type.
- Understanding SQL terminology and syntax
- Creating new tables and records
- Inserting and updating data
- Writing basic SQL queries
- Sorting and filtering
- Accessing related tables with JOIN
- Working with strings
- Finding the numeric type of a value
- Using aggregate functions and transactions
- Updating a table with triggers
- Creating views
Skill Level Beginner
Q: For Mac OS X: When I try to start the Apache Web Server from the XAMPP control panel, it doesn't start, and when I open "localhost" in my web browser, I see a white screen that says "It Works!" instead of the XAMPP page.
sudo apachectl stop
Q: I'm on a Mac, and I get an error in SID that says "attempt to write a read only database." How can I fix this?
A: This usually means that the database folder does not have sufficient permissions for writing by the web user. This can happen if you create the SQL folder new, rather than copying it from the Exercise Files. Here's how to fix this:
- Open a Finder window and Navigate to /Applications/XAMPP/htdocs/SQL
- Control-click on the SQL folder and select "Get Info" from the context menu.
- Under "Sharing and Permissions" (you may need to open the disclosure triangle), in the "everyone" row, select "Read & Write."Then you can close the Info window.
- Now repeat the process for the three *.db files inside the folder.