0

我有下表列出了所有获奖的杯子:


Name: Cups
Columns: Month, Cup, User

Example:
Month | Cup__ | User__
_____ | _____ | ______
Febru | Cup_1 | User_1
Febru | Cup_2 | User_1
March | Cup_1 | User_1
March | Cup_2 | User_2
April | Cup_2 | User_2

*There are only 2 different cups

我知道如何获得每个用户有多少奖励(COUNT),即使是某种类型(WHERE Cup=Cup_1),但我如何在同一个查询中获得所有这些?

基于上表的示例:


User__ | Total | Cup_1 | Cup_2
______ | _____ | _____ | _____
User_1 | __3__ | __2__ | __1__
User_2 | __2__ | __0__ | __2__

User_1 has 3 cups, 2 of Cup_1 and 1 Cup_2.
User_2 has 2 cups, 2 of Cup_2.

基本上,总列是其他列的总和。

4

1 回答 1

1

这有点乏味,但它看起来像这样

SELECT User, COUNT(*) AS Total, SUM(IF(Cup = "Cup_1", 1, 0)) AS Cup_1, SUM(IF(Cup = "Cup_2", 1, 0)) AS Cup_2 FROM Cups GROUP BY User

我将 SUM 与条件语句一起使用,以确定杯子是否与我正在寻找的值匹配。如果有匹配则加 1,如果没有则加 0。如前所述,这有点乏味,但它肯定会奏效!

于 2012-06-14T11:03:31.383 回答