mysql年、月、日グループ統計、count関数内にフィルタ条件とその他の関数を追加し、使用方法

2489 ワード


create_timeはデータベースの時間依存フィールドであり、このフィールドに基づいてクエリーされたデータを年(月/日など)でグループ化する必要があります.
時刻の書式:
        SELECT DATE_FORMAT(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days; 
        SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;
        SELECT DATE_FORMAT(create_time,'%Y%m') months,COUNT(id) COUNT FROM role GROUP BY months 

タイムスタンプ形式
        SELECT FROM_UNIXTIME(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days; 
        SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;
        SELECT FROM_UNIXTIME(create_time,'%Y%m') months,COUNT(id) COUNT FROM role GROUP BY months 

その他のクエリは、次のように行われます.
      
select * from   where date(    )=date(now()) 
select * from   where to_days(    ) = to_days(now());

  N     
select * from   WHERE to_days(now()) - to_days(    ) <= N
        date_sub()  , 
select * from   WHERE DATE_SUB(NOW(), INTERVAL N DAY) <= date(    )


        
select * from   where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(    );
  ,   N     ,    7    N,        MONTH,      YEAR.

   01-01    02-02      
select * from   where DATE_FORMAT(    ,'%m-%d') >= '01-01' and DATE_FORMAT(birthday,'%m-%d') <= '02-02';

 
count()統計数の場合、統計結果をフィルタします.たとえば、テーブルにフィールドnumber,colorがあり、number=1でcolor='redでなければ統計されません.
 select count(number=1 and color = 'red' or NULL) from table;

or Nullは省略できません.number=1 and color='red'条件が一致していない場合、クエリの結果falseはnullではありません.countは値がNULLで統計数ではありません.
と書くこともできます
 select count(if(number=1 and color = 'red' true,null)) from table;

他の関数に合わせて使用することもできます
select count(length(name) > 6 or NULL) from table

 
データを挿入し、idは生成されたuuidである
uuid()関数を直接使用すると、例えば184 fea 35-341 f-11 e 9-8 ede-487 b 6 bd 31 bf 7の36ビット長が生成され、4文字が「-」のidである.
mysqlではreplace()関数を使用して「-」、すなわち
insert into table(id,number,color) values(replace(uuid(), '-', ''),'201423431223','red');

 
ファジイクエリ:
 SELECT * FROM user
        WHERE
            id LIKE CONCAT('%',#{id},'%')
        OR
            name LIKE CONCAT(#{keyword},'%')

 
追加する...