我在一个名为“ processed_data”的PostgreSQL数据库中具有以下架构:
日期->日期类型,shop_id->整数类型,item_category_id->整数类型,sum_item_cnt_day->实型。
显示关系的前5行如下:
date | shop_id | item_category_id | sum_item_cnt_day
------+-----------+--------------------+------------------
2014-12-29 | 49 | 3 | 4
2014-12-29 | 49 | 6 | 1
2014-12-29 | 49 | 7 | 1
2014-12-29 | 49 | 12 | 3
2014-12-29 | 49 | 16 | 1
现在,“ shop_id”有60个唯一的商店,范围从0-59,其中每个商店都出售一些商品,这些商品被分组到一个新列“ item_category_id”中,其中“ sum_item_cnt_day”表示商店出售的商品数量,它是item_category_id。 / p>
我现在正试图通过尝试将以下列作为最终结果来进一步汇总数据-
日期,shop_id,sum_item_cnt_day
因此,数据是根据每个商店在“ item_category_id”中出售的所有商品的数量(用“ shop_id”表示)汇总并计算“ sum_item_cnt_day”的总和。
当我尝试执行以下SQL命令时-
select date, shop_id, sum(sum_item_cnt_day) from processed_data group by shop_id;
显示错误-
错误:列“ processed_data.date”必须出现在GROUP BY子句中或在聚合函数中使用 第1行:从已处理的日期中选择日期,shop_id,总和(sum_item_cnt_day)... ^
甚至以下SQL命令-
select date, shop_id, sum(sum_item_cnt_day) from processed_data where date between '2013-01-01' and '2013-01-31' group by shop_id;
给出错误-
错误:列“ processed_data.date”必须出现在GROUP BY子句中或在聚合函数中使用 第1行:从已处理的日期中选择日期,shop_id,总和(sum_item_cnt_day)... ^
关于出了什么问题以及我错过了什么的任何建议?
谢谢!
答案 0 :(得分:1)
我认为您想要的最简单的解决方法是将GROUP BY
添加到SELECT date, shop_id, SUM(sum_item_cnt_day)
FROM processed_data
GROUP BY date, shop_id;
子句中:
int solvemaze(int horizontal, int vertical, int cote)
{
if ((horizontal == taille - 1) && (vertical == taille - 1))
{
solution[vertical, horizontal] = 1;
return 1;
}
if (horizontal >= 0 && vertical >= 0 && horizontal < taille && vertical < taille && solution[vertical, horizontal] == 0)
{
printsolution();
//if safe to visit then visit the cell
solution[vertical, horizontal] = 1;
for (int i = 0; i < 3; i++)
{
if (mazeTab[horizontal, vertical, cote] == 0)
{
if (cote == 0 && solvemaze(horizontal, vertical + 1, (cote + 3) % 4) == 1)
{
return 1;
}
else if (cote == 1 && solvemaze(horizontal + 1, vertical, (cote + 3) % 4) == 1)
{
return 1;
}
else if (cote == 2 && solvemaze(horizontal, vertical - 1, (cote + 3) % 4) == 1)
{
return 1;
}
else if (cote == 3 && solvemaze(horizontal - 1, vertical, (cote + 3) % 4) == 1)
{
return 1;
}
}
cote = (cote + 1) % 4;
}
//backtracking
solution[vertical, horizontal] = 0;
return 0;
}
return 0;
}
如果您真的不希望每天为每家商店取款,而是想为整个 天中的每家商店取款,那么您将不得不考虑要在多个日期中的哪个日期显示。