想了解日期列的SQL计数的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于日期计算sql的相关问题,此外,我们还将为您介绍关于mysql–它是否提高了索引日期列的性能?、MySQL获取两个日期
想了解日期列的SQL计数的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于日期计算sql的相关问题,此外,我们还将为您介绍关于mysql – 它是否提高了索引日期列的性能?、MySQL 获取两个日期之间的日期列表、MySQL计数/总和字段、MySQL计数匹配词的新知识。
本文目录一览:日期列的SQL计数(日期计算sql)
我有一个包含一组列的表,其中一个是Date列。
我需要计算在同一个月中该列的值出现了多少次。并返回,如果一个月的总和大于3。
例如:
____________________
| DATE | .... |
---------------------
1998-09-02
1998-09-03
1998-10-03
1998-10-04
这必须不返回任何值。因为它没有必要的重复次数。
但这确实做到了:
____________________
| DATE | .... |
---------------------
1998-09-02
1998-09-03
1998-09-12
1998-09-14
1998-10-02
1998-11-21
11月月份。
适用于Oracle DB。
mysql – 它是否提高了索引日期列的性能?
我有一个包含数百万行的表,其中一列是TIMESTAMP,我经常选择日期范围.是否可以提高性能以对该列进行索引,还是不会提供任何显着的改进?
编辑:
所以,我已经将TIMESTAMP列编入索引.以下查询
从日期(‘2013-10-10’)和日期(Now())之间的日期(interaction_time)的交互中选择计数(*)
需要3.1秒.
交互表中只有300多万条记录.
上面的查询产生~976k的结果
这似乎是合理的时间来执行此任务吗?
>首先,索引列.
>其次,这一点更为重要,请确保查询的条件是可以使用的,即可以使用索引.特别是,不应在列上使用函数.在您的示例中,编写条件的一种方法是:
WHERE interaction_time >= '2013-10-10'
AND interaction_time < (CURRENT_DATE + INTERVAL 1 DAY)
MySQL 获取两个日期之间的日期列表
select * from
(select adddate(''1970-01-01'',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between ''2017-02-10'' and ''2017-06-15'';
上例返回 2017-02-10 到 2017-06-15 之间的日期列表。
MySQL计数/总和字段
我想要实现的是一份有关日常财务交易的报告.通过我的SQL查询,我想计算现金交易的总数,总现金价值以及支票的总金额.我只想在指定的日期这样做.
这是我遇到的查询的摘要.这些求和和计数命令正在处理表中的所有数据,而不是所选日期的所有数据.
(SELECT SUM(amount) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash,(SELECT COUNT(*) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash_transactions
抱歉,如果我没有时间发布足够的细节.如果您需要更多信息,请询问..
干杯.
更新:
我已经在这里发布了一些有关布局和结果的更多信息:
www.conorhackett.com/sql/transaction.html
问题是,当我加入payment_table时(因此我可以指定payment_type_name而不是id),它将所有交易记为现金/支票.日期限制似乎消失了.
任何帮助表示赞赏.
select
t.payment_type_id as type_id,sum(t.amount) as total_cash,count(*) as total_cash_transactions
from TRANSACTION t
where t.date = '2010-05-01'
group by t.payment_type_id
然后,如果需要从那里获取类型名称,则可以将其与Payment_type结合在一起.
MySQL计数匹配词
如何查询以获取字段中匹配单词的数量,特别是在MySQL中。我只需要获取“搜索字词”出现在字段值中的次数即可。
例如,值是“一二一二”,所以当我搜索单词“一”时,它应该给我3
是否有可能?因为当前我只是从数据库中提取值,并使用服务器端语言进行计数。
谢谢
答案1
小编典典您可以创建一个可直接在SQL中使用的函数,以便一步一步完成所有操作。
这是我在MySQL网站上找到的函数:
delimiter ||DROP FUNCTION IF EXISTS substrCount||CREATE FUNCTION substrCount(s VARCHAR(255), ss VARCHAR(255)) RETURNS TINYINT(3) UNSIGNED LANGUAGE SQL NOT DETERMINISTIC READS SQL DATABEGINDECLARE count TINYINT(3) UNSIGNED;DECLARE offset TINYINT(3) UNSIGNED;DECLARE CONTINUE HANDLER FOR SQLSTATE ''02000'' SET s = NULL;SET count = 0;SET offset = 1;REPEATIF NOT ISNULL(s) AND offset > 0 THENSET offset = LOCATE(ss, s, offset);IF offset > 0 THENSET count = count + 1;SET offset = offset + 1;END IF;END IF;UNTIL ISNULL(s) OR offset = 0 END REPEAT;RETURN count;END;||delimiter ;
您应该像这样使用它:
SELECT substrCount(''one two one onetwo'', ''one'') `count`; // Returns 3
今天关于日期列的SQL计数和日期计算sql的讲解已经结束,谢谢您的阅读,如果想了解更多关于mysql – 它是否提高了索引日期列的性能?、MySQL 获取两个日期之间的日期列表、MySQL计数/总和字段、MySQL计数匹配词的相关知识,请在本站搜索。
本文标签: