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

特定のタイプ(WHERE Cup = Cup_1)であっても、各ユーザーが持つ賞の数(COUNT)を取得する方法は知っていますが、同じクエリですべての賞を取得するにはどうすればよいですか?

上記の表に基づく例:


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 に答える