我有一個表Mysql的計數幾個領域
id|user_id|start|stop 1| 1| 1| 1 2| 2| 1| 1 3| 2| 1| 0 4| 3| 0| 0
我想下一個結果
user_id|total|start|stop 1| 1| 1| 1 2| 2| 2| 1 3| 1| 0| 0
所以我想通過做USER_ID昂拿到3計數和組了。有沒有可能準備查詢與聯合和沒有派生表?
我有一個表Mysql的計數幾個領域
id|user_id|start|stop 1| 1| 1| 1 2| 2| 1| 1 3| 2| 1| 0 4| 3| 0| 0
我想下一個結果
user_id|total|start|stop 1| 1| 1| 1 2| 2| 2| 1 3| 1| 0| 0
所以我想通過做USER_ID昂拿到3計數和組了。有沒有可能準備查詢與聯合和沒有派生表?
總排爲在stop
兩次計數start
和1與1行。
SELECT user_id,
count(case start WHEN 1 then 1 else null end) AS start,
count(case stop WHEN 1 then 1 else null end) AS stop,
count (*) AS total
FROM tablename
GROUP BY user_id
計數功能將計入列中值0或1。所以結果將是錯誤的。 Op想知道用戶啓動和停止的次數以及該user_id的記錄總數。 –
我誤解了這個問題,並糾正了我的答案。你介意取消投票嗎? –
感謝您的回答! – dr0zd
SELECT user_id,
Sum (start) AS start,
Sum (stop) AS stop,
Count(*) AS total
FROM tablename
GROUP BY user_id
儘管在這種情況下'count'與'sum'給出了相同的答案,我仍然建議使用'count' - 如果表中的數據發生變化並且允許0或1以外的值,它仍然可以工作。 –
感謝您的回答! – dr0zd
SELECT user_id, COUNT(*) total, SUM(start=1) start, SUM(stop=1) stop
FROM my_table
GROUP BY user_id
感謝您的回答! – dr0zd
'user_id = 2'是如何計算'start'和'stop'的? – eggyal
你是如何得到下一個結果的基礎上你有? –
它似乎是user_id = 2的行應該是'2 | * 3 * | 2 | 1' –