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. DISTINCT(B栏)
  2. 计数(DISTINCT(B 列))
  3. SUM(C 列) WHERE E 列!= 0
  4. 总和(D栏)
  5. 总和(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

除非我弄错了,否则您建议的字段列表非常接近您在查询中实际需要的内容。我还没有对此进行测试,但试一试(它使用 MySQLGROUP BY来执行DISTINCT您需要的 /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

我不清楚您是否想要B 的每个值或整个表中的 SUM 并在每一行重复。如果是前者(这对我来说最有意义),我认为这几乎就是你想要的:

 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 回答