División en una sentencia SQL.

Bueno entonces mi pregunta:

Tengo una tabla itemconfig donde hay muchos datos sobre artículos almacenados en nuestros almacenes. Necesito seleccionar un especial group de artículos para que pueda hacer algunas pruebas relacionadas con el trabajo. Hasta ahora he estado haciendo los cálculos en mi cabeza mientras me desplazo por la base de datos, pero debe haber una manera más fácil.

Dentro de itemconfig, quiero ver específicamente las columnas case_qty y pal_qty e itm_num. Lo que me gustaría hacer es seleccionar todo itm_num donde pal_qty / case_qty es mayor que decir 500. Esto me daría todo itm_num instantáneamente que son relevantes para mis pruebas. Lamentablemente, no estoy familiarizado con cómo hacer esto o si es posible.

Gracias.

preguntado el 27 de julio de 12 a las 18:07

¿Cómo marco esto como respondido? Y supongo que les doy puntos a todos o lo que sea. Normalmente no uso este lugar. También pregunté y luego fui a almorzar, así que lo siento por la demora. -

3 Respuestas

La división se implementa en la mayoría de los dialectos de SQL: utilice /, Así:

select * from table
where  pal_qty / case_qty > 500

Asumiendo case_qty no es negativo, puede protegerse de la división por cero (y usar índices en pal_qty, si lo hay*) multiplicando ambos lados por case_qty:

select * from table
where  pal_qty > 500 * case_qty

* Gracias Vicente Savard para esta observación.

contestado el 23 de mayo de 17 a las 11:05

Esto también tiene la ventaja de permitir el uso de un índice en la columna pal_qty - Vicente Savard

@VincentSavard Tienes razón, esta es una gran observación, ¡gracias! - Serguéi Kalinichenko

Esto es posible, usando un simple WHERE cláusula:

SELECT 
  itm_num
FROM itemconfig
WHERE 
  /* Make sure you don't divide by zero */
  case_qty > 0 AND
  pal_qty / case_qty > 500

Respondido 27 Jul 12, 18:07

Puedes usar la división en tu WHERE cláusula.

SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500

Si tendrá case_qty que es igual a cero, entonces debe asegurarse de no dividir por cero

SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500
    AND case_qty > 0

Respondido 27 Jul 12, 18:07

Tenga en cuenta que MySQL felizmente hará una división por cero. - un caballo sin nombre

@a_horse_with_no_name eso es simplemente triste. - Taryn

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.