0

次のテーブル情報が与えられます。

A       B           C           D       E

1       786788      123.45      0       617
2       786788      654.21      0       3271
3       786788      111.11      0       556
4       786788      224.45      0       1122
5       786788      0.12        12      0   
6       786788      3.21        321     0   
7       786788      0.22        22      0   
8       786788      0.33        33      0   
9       786788      757.57      0       3788
10      786788      545.41      0       2727
11      786788      0.07        7       0   
12      786788      0.05        5       0   
13      786790      50          0       125 
14      786790      50          0       125 
15      786790      50          0       125 
16      786790      50          0       125 
17      786790      50          0       125 
18      786788      1.23        0       6   
19      786788      0.12        0       1   
20      786788      0.12        0       1   
21      786788      0.05        0       0   
22      786788      0.55        0       3   
23      786788      0.45        45      0   
24      786788      1.47        0       7   
25      786788      0.41        0       2   
26      786788      0.74        74      0   
27      786788      100         0       500 
36      786788      5           0       25  
37      786788      24          0       120 
38      786788      23          0       115 
39      786788      1.47        0       7   
40      786788      12          0       60  
41      786788      14          0       70  
43      786222      7.8         0       39  
44      786222      0.12        12      0   
45      786788      47.47       0       237 
46      786788      9.89        989     0   
47      786788      1.23        0       6   
48      786788      1.23        0       6   

1 つのクエリで次の情報を取得しようとしています。

  1. DISTINCT(列B)
  2. COUNT(DISTINCT(B列))
  3. SUM(列 C) WHERE 列 E != 0
  4. SUM(D列)
  5. SUM(E列)

すべてがうまくいけば、結果は次の例のようになります (この例では、すべてを「合計」していません)。

786788      32      SUM(column C) WHERE column E != 0       SUM(column D)       SUM(column E)
786790      5       SUM(column C) WHERE column E != 0       SUM(column D)       SUM(column E)
786222      2       SUM(column C) WHERE column E != 0       SUM(column D)       SUM(column E)
4

3 に答える 3

2

私が間違っていない限り、提案されたフィールドリストは、クエリで実際に必要なものにかなり近いものです。私はこれをテストしていませんが、これを試してみてください(MySQLを使用しGROUP BYDISTINCT必要な/ groupingを実行します):

SELECT
    B,
    COUNT(*),
    SUM((CASE WHEN E != 0 THEN C ELSE 0 END)),
    SUM(D),
    SUM(E)

FROM
    your_table

GROUP BY B
于 2012-09-28T02:11:55.747 に答える
1

SUMがBの各値内にあるのか、テーブル全体に渡って各行で繰り返されるのかは、私にはわかりません。前者(私にとって最も理にかなっている)の場合、これはほとんどあなたが望むものだと思います:

 SELECT B, COUNT(*), SUM(IF(E = 0, 0, C)), SUM(D), SUM(E) 
    FROM FollowingTable GROUP BY B
于 2012-09-28T02:12:43.573 に答える
0

これは仕事ですか?

select b, count(b),sum(case e when 0 then 0 else c end), sum(d), sum(e) from test01 group by b
于 2012-09-28T02:29:13.203 に答える