this post was submitted on 26 Oct 2023
285 points (96.4% liked)

SQL - any and all

306 readers
1 users here now

For discussion about SQL and databases. All versions welcome.

founded 1 year ago
MODERATORS
285
submitted 1 year ago* (last edited 1 year ago) by DeadNinja to c/sql
 

Jesus died at 33, so that can't get returned in the query response lol

you are viewing a single comment's thread
view the rest of the comments
[–] muel 10 points 1 year ago (4 children)

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?

[–] Whelks_chance 16 points 1 year ago (1 children)

Realistically you wouldn't store age, you'd store birthdate or possibly a datetime value, and calculate it from there

[–] hansl 6 points 1 year ago

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.

[–] V0lD 5 points 1 year ago* (last edited 1 year ago) (4 children)

Why strictly less than 30 and greater or equal 25? (25 ≤ X < 30)

Shouldnt it be strictly less and strictly more (25 < X < 30)?

[–] [email protected] 7 points 1 year ago

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

[–] [email protected] 7 points 1 year ago

And here comes the most annoying error, the off by one error

[–] schmidtster 2 points 1 year ago* (last edited 1 year ago) (1 children)

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.

[–] V0lD 1 points 1 year ago (1 children)

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

[–] schmidtster 3 points 1 year ago* (last edited 1 year ago) (2 children)

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.

[–] MeanEYE 3 points 1 year ago (3 children)

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....

[–] schmidtster 2 points 1 year ago (1 children)

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?

[–] MeanEYE 1 points 1 year ago (1 children)

I don't know but it doesn't make sense. The saying, that is.

[–] schmidtster 2 points 1 year ago (1 children)

Huh, it just clicked.

If you eat your cake you no longer have it, and to have a cake you can’t eat it.

[–] MeanEYE 1 points 1 year ago

Doesn't make a lot of sense to me still.

[–] DABDA 2 points 1 year ago (1 children)

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.

[–] MeanEYE 1 points 1 year ago (1 children)

Okay, that makes sense, just weird choice of words.

[–] DABDA 3 points 1 year ago

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.

[–] [email protected] 1 points 1 year ago

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.

[–] V0lD 0 points 1 year ago (1 children)

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

[–] schmidtster 1 points 1 year ago* (last edited 1 year ago) (1 children)

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?

[–] V0lD 0 points 1 year ago* (last edited 1 year ago) (2 children)

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

[–] schmidtster 1 points 1 year ago (1 children)

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?

[–] V0lD 0 points 1 year ago (1 children)

The number 25 would always be between 25 and 30

Okay, wait, what do you think the word "between" means?

[–] schmidtster 0 points 1 year ago (1 children)

I explained that if you wouldn’t take a small section out of context.

[–] V0lD 1 points 1 year ago (1 children)

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

[–] schmidtster 0 points 1 year ago (1 children)

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.

[–] V0lD 1 points 1 year ago

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

[–] [email protected] 5 points 1 year ago

This is a question for story refinement.

[–] [email protected] 0 points 1 year ago

"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.