GVKun编程网logo

日期列的SQL计数(日期计算sql)

8

想了解日期列的SQL计数的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于日期计算sql的相关问题,此外,我们还将为您介绍关于mysql–它是否提高了索引日期列的性能?、MySQL获取两个日期

想了解日期列的SQL计数的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于日期计算sql的相关问题,此外,我们还将为您介绍关于mysql – 它是否提高了索引日期列的性能?、MySQL 获取两个日期之间的日期列表、MySQL计数/总和字段、MySQL计数匹配词的新知识。

本文目录一览:

日期列的SQL计数(日期计算sql)

日期列的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 – 它是否提高了索引日期列的性能?

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 获取两个日期之间的日期列表

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计数/总和字段

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),它将所有交易记为现金/支票.日期限制似乎消失了.

任何帮助表示赞赏.

最佳答案
无需相关子查询,只需使用group by

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计数匹配词

如何查询以获取字段中匹配单词的数量,特别是在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计数匹配词的相关知识,请在本站搜索。

本文标签: