Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自地狱的MySQL查询_Mysql - Fatal编程技术网

来自地狱的MySQL查询

来自地狱的MySQL查询,mysql,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

根据下表信息:

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   
我试图在一次查询中获得以下信息:

  • 不同(B列)
  • 计数(不同(B列))
  • 求和(C列),其中E列=0
  • 总和(D栏)
  • 总和(E栏)
  • 如果一切顺利,结果应该如下示例所示(我没有对示例中的所有内容进行“求和”):


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


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


    我不清楚你是想让总和在B的每一个值之内,还是在整个表中,并在每一行重复。如果是前者(对我来说最有意义),我想这正是你想要的:

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

    我不清楚你是想让总和在B的每一个值之内,还是在整个表中,并在每一行重复。如果是前者(对我来说最有意义),我想这正是你想要的:

     SELECT B, COUNT(*), SUM(IF(E = 0, 0, C)), SUM(D), SUM(E) 
        FROM FollowingTable GROUP BY B
    
    这是工作吗

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

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

    到目前为止,您尝试的查询是?结果将如何格式化
    DISTINCT(B列)
    返回多行,而
    count
    sum
    只返回一行row@InSane我试过很多变体,你只要相信我的话就行了。我来这里是为了从答案中学习,而不是复制和粘贴。到目前为止,您尝试的查询是?结果将如何格式化
    DISTINCT(B列)
    返回多行,而
    count
    sum
    只返回一行row@InSane我试过很多变体,你只要相信我的话就行了。我来这里是为了从答案中学习,而不是复制和粘贴。啊,“案例”。。我怎么能忘记这个案子?时间太长了。@rideTheWave是的,我喜欢它,也讨厌它=P。同样地,如果你现在不与
    CASE
    说话,那么
    IF()
    语句也会起同样的作用(就像拉里的回答一样)。啊,“CASE”。。我怎么能忘记这个案子?时间太长了。@rideTheWave是的,我喜欢它,也讨厌它=P。同样地,如果你现在没有与
    CASE
    对话,那么
    IF()
    语句也会起同样的作用(就像拉里的回答一样)。