Dzielenie w instrukcji SQL.


Więc moje pytanie brzmi:
Mam tabelę itemconfig, w której jest dużo danych produktów przechowywanych w naszych magazynach. Muszę wybrać określone elementy
group
, aby móc przeprowadzić testy związane z pracą. Do tej pory robiłem matematykę w głowie podczas przewijania bazy danych, ale powinien być łatwiejszy sposób.
W itemconfig chcę konkretnie przyjrzeć się kolumnom case_qty, pal_qty i itm_num. Chciałbym wybrać wszystko, co itm_num, gdzie
pal_qty/case_qty
jest większe niż, powiedzmy,
500
. To dałoby mi natychmiast wszystko
itm_num
, co jest istotne dla moich testów. Niestety nie wiem, jak to zrobić lub czy w ogóle jest to możliwe.
Podziękować.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Podział jest zaimplementowany w większości dialektów SQL: użyj
/
, na przykład:
select * from table
where pal_qty/case_qty > 500

Zakładając, że
case_qty
jest nieujemna, możesz zabezpieczyć się przed dzieleniem przez zero (i użyć indeksów na
pal_qty
, jeśli istnieją *), mnożąc obie strony przez
case_qty : 
select * from table
where pal_qty > 500 * case_qty

* Dziękuję

Vincent Savard
https://stackoverflow.com/user ... avard
dla tej obserwacji.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jest to możliwe dzięki prostej klauzuli
WHERE
:
SELECT 
itm_num
FROM itemconfig
WHERE
/* Make sure you don't divide by zero */
case_qty > 0 AND
pal_qty/case_qty > 500
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz użyć dzielenia w klauzuli
WHERE
.
SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500

Jeśli masz case_qty równe zero, musisz mieć pewność, że nie dzielisz przez zero
SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500
AND case_qty > 0

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się