我遇到了需要编写的查询问题。出于某种原因,我似乎无法得到任何工作。我知道解决方案非常简单,但我似乎无法想到它。
假设我在我的数据库中有一个名为&#34的表;他告诉"看起来像这样:
ID | Item | value
------------------------------
1 | item 1 | 3
2 | item 1 | 4
3 | item 1 | 3
4 | item 2 | 3
5 | item 3 | 3
6 | item 1 | 3
7 | item 1 | 3
8 | item 1 | 3
9 | item 4 | 3
10 | item 4 | 6
我想计算项目1出现的时间值= 3然后将其他项目组合在一起可以为他们提供= 3的计数,例如此表格的输出将为
Item | Count
---------------------
Item 1 | 5
Other | 3
当项目1出现5次时,值为3,所有其他值为3的项目组合在一起并显示为其他项目,计数为3
答案 0 :(得分:2)
聚合的关键是case
语句。然后你还需要计算适当的值。在MySQL中,你可以这样做:
SELECT (CASE WHEN Item = 'item 1' THEN Item ELSE 'Other' END) AS Item, COUNT(*) AS `Count3`
FROM entrys e
WHERE value = 3
GROUP BY Item;
MySQL允许在GROUP BY
中使用列别名。如果你想要所有和的数量,其中值是3,那么你可以这样做:
SELECT (CASE WHEN Item = 'item 1' THEN Item ELSE 'Other' END) AS Item,
COUNT(*) as AllCount, SUM(value = 3) as Count3
FROM entrys e
GROUP BY Item;
答案 1 :(得分:1)
尝试使用派生表,其中您的商品名为Item1
或Other
。然后按名称对派生表进行分组并选择计数。
SELECT
Item,
COUNT(*)
FROM (
SELECT
(CASE
WHEN Item = 'item 1'
THEN 'Item 1'
ELSE 'Other'
END) Item
FROM items
WHERE value = 3) t1
GROUP BY Item
答案 2 :(得分:0)
SELECT CASE Item WHEN 'item 1' THEN Item ELSE 'Other' END AS Item, COUNT(ID) AS `Count`
FROM entrys
GROUP BY CASE Item WHEN 'item 1' THEN Item ELSE 'Other' END