我正在尝试GROUP
,SORT
并且COUNT
在一个查询中,我的一个表名为“商品”。
这是我的MySql
桌子的简化:
family sub_family name detailed_name
Agro Grains Wheat Wheat per 1 mt
Agro Grains Corn Corn per 1 mt
Agro Grains Sugar Sugar per 1 mt
Agro Fruits Apple Apple red
Agro Fruits Apple Apple green
Agro Fruits Apple Apple yellow
Agro Fruits Lemon Lemon classic
Wood Tree Lemon Lemon in logs
Wood Tree Oak Oak in logs
Wood Tree Epicea Epicea in logs
Wood Packaging Kraftliner Krafliner 3mm
我想要 :
GROUP
经过 name
SORT
通过family
,sub_family
并最后name
COUNT
每个的行数family
,sub_family
然后name
(相同sub_family
)到目前为止,我设法做到了所有COUNT
相同的事情sub_family
。
确实,以下查询:
SELECT
TableC.family,
TableC.NbrFamily,
TableB.sub_family,
TableB.NbrSubFamily,
TableA.name,
TableA.NbrName
FROM
(
SELECT
family,
sub_family,
name,
COUNT(DISTINCT commodities.id) AS NbrName
FROM commodities GROUP BY name
) TableA
INNER JOIN
(
SELECT
sub_family,
COUNT(DISTINCT commodities.id) AS NbrSubFamily
FROM commodities GROUP BY sub_family
) TableB
ON (TableA.sub_family = TableB.sub_family)
INNER JOIN
(
SELECT
family,
COUNT(DISTINCT commodities.id) AS NbrFamily
FROM commodities GROUP BY family
) TableC
ON (TableA.family = TableC.family)
GROUP BY TableA.name
ORDER BY TableA.family,TableA.sub_family,TableA.name
结果如下:
family NbrFamily sub_family NbrSubFamily name NbrName
Agro 7 Grains 3 Wheat 1
Agro 7 Grains 3 Corn 1
Agro 7 Grains 3 Sugar 1
Agro 7 Fruits 4 Apple 3
Agro 7 Fruits 4 Lemon 2
Wood 4 Tree 3 Lemon 2
Wood 4 Tree 3 Oak 1
Wood 4 Tree 3 Epicea 1
Wood 4 Packaging 1 Kraftliner 1
你可以看到,NbrName
数 柠檬 2次,但我想它指望它只有1次,因为一个 柠檬 是 水果 sub_family
和其他的 树
sub_family
。
[更新]:这是我想要的结果:
family NbrFamily sub_family NbrSubFamily name NbrName
Agro 7 Grains 3 Wheat 1
Agro 7 Grains 3 Corn 1
Agro 7 Grains 3 Sugar 1
Agro 7 Fruits 4 Apple 3
Agro 7 Fruits 4 Lemon 1
Wood 4 Tree 3 Lemon 1
Wood 4 Tree 3 Oak 1
Wood 4 Tree 3 Epicea 1
Wood 4 Packaging 1 Kraftliner 1
仅是我对您要求的http://sqlfiddle.com/#!9/e9206/16的猜测
因为它带来了预期的结果:
SELECT A.family, C.NbrFamily,A.sub_family,B.NbrSubFamily,A.name,COUNT(A.Name)
FROM commodities as A
LEFT JOIN (
SELECT family,sub_family,COUNT(Name) AS NbrSubFamily
FROM commodities
GROUP BY family,sub_family
) B
ON A.sub_family = B.sub_family
AND A.family = B.family
LEFT JOIN (
SELECT family,COUNT(Name) AS NbrFamily
FROM commodities
GROUP BY family
) C
ON A.family = C.family
GROUP BY A.family,A.sub_family,A.name
ORDER BY A.id
问题内容: 有没有办法在单个查询中按类别和所有产品的总价获取所有产品的总价。 以下是查询,我正在使用按类别给出价格。 问题答案: 在查询中使用ROLLUP。 GROUP BY子句允许使用WITH 修饰符,从而将多余的行添加到摘要输出中。
我正在努力得到正确的语法下面。我尝试过不同的工会,但都没有成功。 我需要将这三个总数相加为“totcount”。数据表非常大,希望找到一种比第4个子查询更好的方法来获取totcount。
部分排序可以通过std::Partial_sort完成。 部分排序方式 5 7 4 2 8 6 1 9 0 3 在对3个元素进行部分排序之后 0 1 2 7 8 6 5 9 4 3 http://en.cppreference.com/w/cpp/algorithm/partial_sort. 但当某些元素已经排序时,这不是最好的。 还有其他这样的函数可以这样做并利用部分排序数组。
问题内容: 我具有以下数据结构(列表列表) 我希望能够 使用函数对列表重新排序,以便我可以按列表中的每个项目分组。例如,我希望能够按第二列分组(以便所有21列在一起) 使用函数仅显示每个内部列表中的某些值。例如,我想减少此列表,使其仅包含“ 2somename”的第四个字段值 所以列表看起来像这样 问题答案: 对于第一个问题,您应该做的第一件事是使用运算符模块中的itemgetter按第二个字段对
因此,我试图学习如何为类项目排序数组。我想知道如何对一个数组进行排序,从而对另一个数组进行排序。在下面的代码中,我可以对年份数组进行排序,但我如何才能使更改这一数组将名称和艺术家数组都更改为它们排列的数组呢?此外,如果你有任何建议,让代码对眼睛不那么苛刻,请告诉我,我正在努力掌握这个概念。