如果值大于零,则打印列名称,计数和总和

时间:2017-06-19 10:09:32

标签: mysql mysqli

我想计算项目的总和,那些值大于零。以下数据和示例如下所示....我无法以此格式获取数据。所以请帮助我......

原始数据

---------------------------------------
Id      Item_1  Item_2  Item_3  Item_4
---------------------------------------
1         0       500     0        0
2         200     0       0        0
3         350     0       0        0
4         0       0      500       0
5         0       300    0         0
6         0       0      0        400
7         0       0      200      0
---------------------------------------

我想要这种格式

--------------------
Count   ITEM    SUM
--------------------
2       Item_1  550
2       Item_2  800
2       Item_3  700
1       Item_4  400

2 个答案:

答案 0 :(得分:1)

您可以在此设计中使用以下查询:

select count(Item_1) as Count, 'Item_1' as ITEM, sum(Item_1) as SUM from table_name
UNION
select count(Item_2) as Count, 'Item_2' as ITEM, sum(Item_2) as SUM from table_name
UNION
select count(Item_3) as Count, 'Item_3' as ITEM, sum(Item_3) as SUM from table_name
UNION
select count(Item_4) as Count, 'Item_4' as ITEM, sum(Item_4) as SUM from table_name

但桌子设计不合适。它应该如下所示:

create table my_table
(id int, item_name varchar(50), item_sold int);

然后您可以使用case语句来比较item_name。

答案 1 :(得分:0)

首先请至少在下面标准化数据库。

项目表

--------------
id      item
--------------
1       Item 1 
2       Item 2  
3       Item 3
--------------

items_values表

--------------------------
id    item_id   item_value
--------------------------
1       1            0
2       1          200
3       3          350
--------------------------    

然后你可以简单地得到如下的结果。

SELECT COUNT(items_values.item_value) AS ValueCount, items.item, SUM(items_values.item_value) FROM items_values
INNER JOIN items ON items_values.item_id = items.id
GROUP BY items.id;