SELECT
COUNT(DAYOFWEEK(`datetime`) = 1 OR NULL) AS Sun,
COUNT(DAYOFWEEK(`datetime`) = 2 OR NULL) AS Mon,
COUNT(DAYOFWEEK(`datetime`) = 3 OR NULL) AS Tue,
COUNT(DAYOFWEEK(`datetime`) = 4 OR NULL) AS Wed,
COUNT(DAYOFWEEK(`datetime`) = 5 OR NULL) AS Thu,
COUNT(DAYOFWEEK(`datetime`) = 6 OR NULL) AS Fri,
COUNT(DAYOFWEEK(`datetime`) = 7 OR NULL) AS Sat
FROM atable
WHERE `type` = 'profile_visit'
AND `datetime` >= CURRENT_DATE() - INTERVAL (DAYOFWEEK(CURRENT_DATE()) - 1) DAY
AND `datetime` < CURRENT_DATE() + INTERVAL 1 DAY
あなたも、私はそれがカウントについてですときCOUNT
を使用する傾向があるが、それは単なる個人的な好みです
SUM(DAYOFWEEK(`datetime`) = 1)
使用することができます。どちらの方法でも返される結果の点で違いはなく、パフォーマンスの面でもどちらでもないはずです。 COUNT
表現の
OR NULL
部分がここで説明されています
UPDATE
週間の月曜日から始まる上記の以下の同等のものを試してくださいスクリプト:
SELECT
COUNT(WEEKDAY(`datetime`) = 0 OR NULL) AS Mon,
COUNT(WEEKDAY(`datetime`) = 1 OR NULL) AS Tue,
COUNT(WEEKDAY(`datetime`) = 2 OR NULL) AS Wed,
COUNT(WEEKDAY(`datetime`) = 3 OR NULL) AS Thu,
COUNT(WEEKDAY(`datetime`) = 4 OR NULL) AS Fri,
COUNT(WEEKDAY(`datetime`) = 5 OR NULL) AS Sat,
COUNT(WEEKDAY(`datetime`) = 6 OR NULL) AS Sun
FROM atable
WHERE `type` = 'profile_visit'
AND `datetime` >= CURRENT_DATE() - INTERVAL (WEEKDAY(CURRENT_DATE())) DAY
AND `datetime` < CURRENT_DATE() + INTERVAL 1 DAY
参考文献:
完璧! – DomingoSL
月曜日から始まる週を使用するようにクエリを変更することはできますか? – DomingoSL
@DomingoSL:私の更新をご覧ください。 –