来自地狱的MySQL查询

时间:2012-09-28 02:08:18

标签: mysql

鉴于以下表格信息:

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. COUNT(DISTINCT(B栏))
  3. SUM(C列)WHERE列E!= 0
  4. SUM(D栏)
  5. SUM(E栏)
  6. 如果一切顺利,结果应该看起来像这个例子(我没有“SUM”所有例子):

    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)
    

3 个答案:

答案 0 :(得分:2)

除非我弄错了,否则您建议的字段列表与您在查询中实际需要的内容非常接近。我没有对此进行过测试,但是给它一个镜头(它使用MySQL的GROUP BY来执行你需要的DISTINCT /分组):

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

FROM
    your_table

GROUP BY B

答案 1 :(得分:1)

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

 SELECT B, COUNT(*), SUM(IF(E = 0, 0, C)), SUM(D), SUM(E) 
    FROM FollowingTable GROUP BY B

答案 2 :(得分:0)

这是工作吗?

select b, count(b),sum(case e when 0 then 0 else c end), sum(d), sum(e) from test01 group by b