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},'%')
追加する...