0

日付と文字列の2つのファイルがあるデータベースがあります(さらに多くのファイルがありますが、これにはこれらだけが興味深いです)文字列は空にすることができます。ここで、空の文字列と空でない文字列の数を数えたいと思います。

SELECT 
  `date`, `serial`, count(`serial`) as count 
FROM 
  `updates` 
WHERE 
  `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59' 
GROUP BY 
  `serial`

これは現時点での私のコードです。これをうまく集約する方法がよくわかりません。

あいさつアレックス

// 編集

結果として私が欲しいのは:

2012-11-25    NULL        2452
2012-11-25    NOT NULL    3476
4

4 に答える 4

2

null ではなく null 文字列をカウントする場合は、次のように使用できます。

SELECT
  `date`,
  count(`serial`) as count_not_nulls,
  count(case when `serial` is null then 1 end) as count_nulls
FROM `updates`
WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59'
GROUP BY `date`

編集:

SELECT `date`, 'NOT NULL', count(`serial`) as count
FROM `updates`
WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59'
     AND `serial` is not null
GROUP BY `date`
UNION
SELECT `date`, 'NULL', count(1) as count
FROM `updates`
WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59'
      AND `serial` is null
GROUP BY `date`
于 2012-12-20T10:18:11.553 に答える
1

短くまっすぐに

SELECT 
  DATE( `date` ) the_date, 
  CASE WHEN serial IS NULL THEN 'NULL' ELSE 'NOT NULL' END sernull, 
  COUNT(*)
FROM 
  updates
WHERE
  DATE( `date` ) = '2012-11-25'
GROUP BY 
  the_date, 
  sernull

SQL フィドルのデモ

于 2012-12-20T10:35:48.337 に答える
0

これがあなたに役立つことを願っています.これを試してください-

SELECT 'date','serial',count('serial') as count
FROM
(SELECT 'date',
           CASE WHEN 'serial'  is null THEN `NULL'
                   ELSE 'NOT NULL' END as serial
FROM `updates` WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59' )
GROUP BY 'date,'serial'

幸運を!

于 2012-12-20T10:31:50.423 に答える
0

これにより、シリアルがnullではないカウントが得られます

SELECT `date`, `serial`, count(`serial`) as count
FROM `updates`
WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59' 
and serial is not null
GROUP BY `serial`

これにより、シリアルがnullのカウントが得られます

SELECT `date`, `serial`, count(`serial`) as count
FROM `updates`
WHERE `date` BETWEEN '2012-11-25 00:00:00' AND '2012-11-25 23:59:59' 
and serial is  null
GROUP BY `serial`
于 2012-12-20T10:18:43.270 に答える