this post was submitted on 26 Oct 2023
286 points (96.4% liked)
SQL - any and all
302 readers
8 users here now
For discussion about SQL and databases. All versions welcome.
- MSSQL
- PostgreSQL
- MariaDB
- SQLite
- etc...
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Slightly off-topic: I get so confused with age conventions. I’m self-taught and do some ad-hoc work for the organization I work for (where no one else has any interest).
To get users between 25 and 30, wouldn’t you want strictly less than 30? And greater than or equal to 25? Or for age is it inclusive?
Realistically you wouldn't store age, you'd store birthdate or possibly a datetime value, and calculate it from there
First Normal Form users unite!
By the by, as someone who have used both NoSQL and SQL extensively (once in the same project), the trick of NoSQL is that you shouldn’t use FNF and compute that at write time. The idea is that it’s faster to MapReduce pre calculated values since that’s the operation you want to optimize in a NoSQL world. A lot of people get that wrong and just replace MySQL with Mongo without rethinking usage and schemas.
But even in a NoSQL context I’d rather use a Postgres jsonb column over MongoDB.
This is a question for story refinement.
Why strictly less than 30 and greater or equal 25? (25 ≤ X < 30)
Shouldnt it be strictly less and strictly more (25 < X < 30)?
And here comes the most annoying error, the off by one error
I guess you could argue that people we refer to as "25 years old" are actually 25 years and some days/hours/minutes/whatever old, therefore more than 25. People referred to as 30 are, in the same vein, more than 30
Well if you’re 25 and a day, that would mean you wouldn’t be able to fit any definition. The second after you turn 25 you would be “over 25” and could be included in 25, over 25 and between 25 and X until you turn 26 and the same repeats.
Even if you're 25 and 11 months, you should still be counted as 25. Same way it should be for other age based restrictions
But you’re not 25, you’re 25 and 11 months you can’t have your cake and eat it too.
If it’s the same way for other age base restrictions, you are now contradicting your original comments point… it’s between 25 to 30, so 25, 25 and a day, and 25 and 364 days would all be included.
Unrelated question but why can't one have a cake and eat it? Presumably that's why you'd own a cake in the first place. Or is world filled with people eating other people's cakes but no owner is ever allowed to. Such a mysterious saying....
I’m an adult and go just drive and buy a cake anytime I want. I think it comes from you buy a cake to share, you are supposed to buy “a slice/piece” for yourself?
I don't know but it doesn't make sense. The saying, that is.
Huh, it just clicked.
If you eat your cake you no longer have it, and to have a cake you can’t eat it.
Doesn't make a lot of sense to me still.
The easiest way to parse the meaning is to reverse the statement order, i.e. "Can't eat your cake and have it too." If you ate it, you wouldn't have it. If you have it, you haven't eaten it. The two states are mutually exclusive.
Okay, that makes sense, just weird choice of words.
Totally agree. I've never been a fan of the saying and it only clicked properly for me when I heard it explained with the statement reversal.
That phrase is about fancy cakes, like wedding cake art. You can't keep the art and eat the cake. Like the food network cake competitions, some of those things are super creative, but you can't have the art and eat the cake.
It's like painting custom wrapping paper, or printing on toilet paper. If the purpose of something is to be consumed or destroyed, it can't do that and look good at the same time. You have to choose between having pretty mocha art and drinking a mocha.
I'm not contradicting anything. I think someone who's 25 years and 11 months should not be returned from the query. Hence, the strict inequality
But you absolutely are contradicting yourself…..
they are between the ages of 25 and 30 meaning your information would be incorrect or wrong… and it’s not even a debate since they are in fact between he age range.
It’s like saying 25.2 isn’t part of 25, and that’s not up for debate, and if it is well you’re not here to discuss in good faith now are you?
Okay, since you're starting to throw insults via this angle, let's try to make my case via a different route
Do you think the db is storing your age as an int or as a float? We know from the given information that it is stored as a singular number
So, I'm assuming it's as an int, which means that until you're 26, you're still 25. If you're 25 and 11 months, that's still 25 years old, and stored as such. The strict inequality should therefore not put it in the range 25 < X < 30
If it’s a singular number and not a rounded number. Which we could also assume here…. The number 25 would always be between 25 and 30, if you’re using rounded numbers, there is a possibility that 25 wouldn’t be between 25 and 30 since you would need to account for 24.5 and greater numbers rounded to it.
And with age, you never round up. So according to these well established rules over time. What could it be other than included in “between 25-30” unless it’s not age or a rounded number which you don’t do for age?
Okay, wait, what do you think the word "between" means?
I explained that if you wouldn’t take a small section out of context.
I don't. This is the crux of the argument
The integer 25 does not lie in the open interval (25,30). And someone with at least 25 years on him but not yet 26 has an integer age of 25.
Again, we're no working with the normal Euclidean topology here, but with the Euclidean topology projected on the integers
That’s a whole lot of words for, “I was caught contradicting and lying and now am now talking out of my ass”
The crux of the argument was explained using all possible outcomes, and you still can’t comprehend it. It’s not an integer it’s age, if you’ve stored it as an integer, you’ve done fucked up in every way possible.
You accused me of not talking in good faith before, but I'm not the one throwing insults.
Since you seem unwilling to discuss this any further, I'll halt the conversation too
"Between 25 and 30" would tell me 25 birthday (since even at 12:00:01 you are over 25 by a second) to one second before 30th birthday.
So ages 25, 26, 27, 28, and 29.