2

ここに表1があります:

+--------------------+
| type | size | code |
+--------------------+
|   A  |  10  |   1  |
|   A  |   8  |   0  |
|   B  |   3  |   1  |
|   B  |   5  |   0  |
|   A  |   9  |   1  |
+--------------------+

ここで、これらの目標を達成するためのビューを作成したいと思います。

1. Group by "type" column

2. calculate avg(size) for each "type"

3. calculate the percent of "1" in "code" cloumn for "type"

+----------------------------+
| type | avg(size) | percent |
+----------------------------+
|   A  |     9     |   2/3   |
|   B  |     4     |   1/2   |
+----------------------------+

このようなビューを作成する最良の方法は何ですか?

4

4 に答える 4

6

これを試してみてください

CREATE VIEW viewName 
AS
SELECT `type`, 
       AVG(`size`),
       CONCAT(
              SUM(`code`), 
              '/',
              COUNT(`code`)
             ) percent
FROM table1
GROUP BY `type`

SQLFiddleデモ

于 2012-09-23T14:30:57.477 に答える
1
create view myview as
select 
    type,
    avg(size) as avg_size,
    concat(sum(code), '/', count(code)) as percent
from t1
group by type
于 2012-09-23T14:35:38.813 に答える
0

codeが数値であり、人間が読める形式ではなく浮動小数点数としてパーセンテージを探している場合は、次を使用できます。

SELECT type, AVG(size) AS avgsize, AVG(code) AS percent
  FROM table1
  GROUP BY type
于 2012-09-23T14:39:07.087 に答える
0

CODE が数値であると仮定すると、次のようになります。

select   
   t1.A as TYPE,   
   avg(SIZE) as AVGSIZE,   
   100 * sum(t1.CODE) / count(*) as PERCENT  
from TABLE1 as t1  
group by T1.TYPE;  

CODE が数値でない場合は、変換が必要になることがあります。

于 2012-09-23T14:34:55.677 に答える