Jak to resit pomoci SQL ?

Jan Serak sherry na pikebo.cz
Úterý Březen 11 11:53:17 CET 2003


Karel Zak wrote:
>  (smer je urcen pomoci boolean 'isin')
> 
> SELECT * FROM rule ORDER BY name;
>  name | isin | data
> ------+------+-------
>  AAA  | t    |   125
>  AAA  | f    |    25
>  AAA  | f    | 10000
>  BBB  | t    |  1025
>  BBB  | f    |  1000
>  CCC  | t    |   100
>  CCC  | f    |    46
>  DDD  | f    |    46
>  EEE  | t    | 40000
> 
> SELECT name, i.data AS in, o.data AS out
> FROM  (
>     SELECT name, sum(data) AS data FROM rule WHERE isin='t' GROUP BY name
> ) i FULL JOIN (
>     SELECT name, sum(data) AS data FROM rule WHERE isin='f' GROUP BY name
> ) o USING( name );
> 
>  name |  in   |  out
> ------+-------+-------
>  AAA  |   125 | 10025
>  BBB  |  1025 |  1000
>  CCC  |   100 |    46
>  DDD  |       |    46
>  EEE  | 40000 |

Bez joinu:

SELECT name,sum(replace(isin,'t',data,'f',0)) as
in,sum(replace(isin,'f',data,'t',0)) as out
  from rule
  group by name;


						Jan Serak


Další informace o konferenci Test