MySQL Select Count (COL) con una condición -- mysql campo con sql camp Relacionados El problema

Mysql SELECT COUNT(COL) with a condition


4
vote

problema

Español

Tengo una tabla con algunos datos como

  id      group_id    f1    f2    f3 1          1        a     b    2          1        c    3          2        a           c   

¿Cómo puedo recuperar una fila con Group_ID y contar con filas para cada campo que satisface alguna condición textual?

Me gusta eso:

  MY_MAGIC_SELECT(`f1`='a',`f3`='c');   

debe devolver

  group_id    f1    f2    f3    1        1     0     0            2        1     0     1   
Original en ingles

I have a table with some data like

id      group_id    f1    f2    f3 1          1        a     b    2          1        c    3          2        a           c 

How can i retrieve one row with group_id and count of rows for each field satisfying some textual condition?

Like that:

MY_MAGIC_SELECT(`f1`='a',`f3`='c'); 

must return

group_id    f1    f2    f3    1        1     0     0            2        1     0     1 
     

Lista de respuestas

13
 
vote
vote
La mejor respuesta
 

Uso de una secuencia de SUM(CASE...) Las funciones agregadas para representar cada una de sus condiciones deben hacerlo. El CASE devuelve un 0 o 1 si la condición se coincide, y el SUM()6 agrega el resultado. El GROUP BY se aplica en el group_id .

  SELECT   group_id   SUM(CASE WHEN f1 = 'a' THEN 1 ELSE 0 END) AS f1,   SUM(CASE WHEN f2 = 'b' THEN 1 ELSE 0 END) AS f2,   /* f3 = 'b' isn't in your "magic select" but here it is anyway... */   SUM(CASE WHEN f3 = 'c' THEN 1 ELSE 0 END) AS f3 FROM    yourtable GROUP BY group_id   

Específicamente para MySQL, no necesita el params.require(:user).permit(:email, :password, :password_confirmation, {role_ids: []}) 0 Dado que la expresión booleana params.require(:user).permit(:email, :password, :password_confirmation, {role_ids: []}) 1111111111111. . Sin embargo, esto no es portátil para ningún RDBMS.

  params.require(:user).permit(:email, :password, :password_confirmation, {role_ids: []}) 2  

Aquí hay una demostración rápida en SQLFIDDLE.com

 

Using a sequence of SUM(CASE...) aggregate functions to represent each of your conditions should do it. The CASE returns a 0 or 1 if the condition is matched, and the SUM() adds the result. The GROUP BY is applied on the group_id.

SELECT   group_id   SUM(CASE WHEN f1 = 'a' THEN 1 ELSE 0 END) AS f1,   SUM(CASE WHEN f2 = 'b' THEN 1 ELSE 0 END) AS f2,   /* f3 = 'b' isn't in your "magic select" but here it is anyway... */   SUM(CASE WHEN f3 = 'c' THEN 1 ELSE 0 END) AS f3 FROM    yourtable GROUP BY group_id 

Specifically for MySQL, you don't need the CASE since the boolean expression f1 = 'a' will itself return a 1 or 0. So you can simplify it to the example below. This is not portable to any RDBMS, however.

SELECT   group_id   SUM(f1 = 'a') AS f1,   SUM(f2 = 'b') AS f2,   SUM(f3 = 'c') AS f3 FROM    yourtable GROUP BY group_id 

Here is a quick demonstration on SQLfiddle.com

 
 
         
         
-2
 
vote

Bueno, es simple MySQL y necesitas aprender esto. Por favor verifica esto: http://www.w3schools.com/sql/sql_where.asp

http://dev.mysql.com/ Doc / Refman / 5.0 / ES / Control-Flow-Functions.HTML

  params.require(:user).permit(:email, :password, :password_confirmation, {role_ids: []}) 3  

por ejemplo

  params.require(:user).permit(:email, :password, :password_confirmation, {role_ids: []}) 4  
 

Well, it is simple MySQL and you need to learn this. Please check this out: http://www.w3schools.com/sql/sql_where.asp

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

SELECT column_name(s)  FROM table_name  WHERE column_name operator value 

for example

SELECT * FROM Persons  WHERE City='Sandnes' 
 
 
       
       

Relacionados problema

65  Decodificación T-SQL FUNCIONES EN C # / VB.NET  ( Decoding t sql cast in c vb net ) 
Recientemente, nuestro sitio ha sido desalentado con el resurgimiento de la asprox botnet inyección de SQL Ataque. Sin entrar en detalles, el ataque inten...

66  ¿Cómo indexo una columna de base de datos?  ( How do i index a database column ) 
Ojalá, puedo obtener respuestas para cada servidor de base de datos. Para un resumen de cómo se retira las obras de indexación: ¿Cómo funciona la indexació...

126  Bases de datos de archivos planos [cerrados]  ( Flat file databases ) 
cerrado . Esta pregunta es basada en opinión . Actualmente no está aceptando respuestas. ¿...

146  ¿Marque los cambios en una tabla de SQL Server?  ( Check for changes to an sql server table ) 
¿Cómo puedo monitorear una base de datos de SQL Server para cambios en una tabla sin usar desencadenantes o modificando la estructura de la base de datos de n...

43  Mapas de sitio ASP.NET  ( Asp net site maps ) 
¿Alguien tiene experiencia en la creación de proveedores de mapas de sitio ASP.NET basados ​​en SQL? Tengo el archivo XML predeterminado web.sitemap Traba...

26  ¿Por qué la indexación de texto completo de SQL no tiene resultados de devolución de texto para las palabras que contienen #?  ( Why doesnt sql full text indexing return results for words containing ) 
Por ejemplo, mi consulta es como la siguiente utilizando SQL Server 2005: SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') Tengo un índice de tex...

2520  ¿Cómo funciona la indexación de la base de datos? [cerrado]  ( How does database indexing work ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

62  Cambie los valores de columna indexados únicos en la base de datos  ( Swap unique indexed column values in database ) 
Tengo una tabla de base de datos y uno de los campos (no la clave principal) está teniendo un índice único en él. Ahora quiero intercambiar valores debajo de ...

50  CX_ORACE: ¿Cómo lo hago en un conjunto de resultados?  ( Cx oracle how do i iterate over a result set ) 
Hay varias formas de iterar sobre un conjunto de resultados. ¿Cuál es la compensación de cada uno? ...

125  ¿Hay un sistema de control de versiones para los cambios de la estructura de la base de datos?  ( Is there a version control system for database structure changes ) 
A menudo me encuentro con el siguiente problema. Trabajo en algunos cambios en un proyecto que requiere nuevas tablas o columnas en la base de datos. Hago l...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos