在我的MYSQL表中,我有一列是文本元素和日期(1994、1995,... 2019)。 我想计算一个特殊年份(比如2006年)的查找频率(不是一行,而是整列)。 一年一次,多次或一次都找不到一行。
我不知道如何在MYSQL中编码。
感谢您的帮助! 迈克
答案 0 :(得分:1)
在字符串中获取字符串的出现有些棘手。您可以将要获取其出现次数的字符串替换为要计算这些出现次数的字符串。如果您然后将原始字符串的长度与返回的字符串void dynamic_allocation_array(int **a, int n) {
*a = malloc(n * sizeof(int));
for(int i = 0; i < n; i++){
scanf("%d", *a + i);
}
}
的长度之差指定为您要获取出现次数的字符串的长度,您得到了出现次数。要在所有行上求和,您可以简单地使用replace()
。
sum()
答案 1 :(得分:0)
根据您的问题,我假设您仅存储了年份,因此该列的数据类型为TEXT而不是DATE。为此,请使用以下查询: (假设包含年份的列名为year_col)
select count(year_col) from <table name> where year_col='2006' ;
如果数据类型为DATE,则考虑以下查询:
select count(year_col) from <table name> where year(year_col)='2006';
您可以了解有关count()函数here
的更多信息答案 2 :(得分:0)
您可能会尝试类似的语句。
如果该列中的值仅包含年份,那么您将使用标准的where
子句:
SELECT COUNT(*) from TableName WHERE ColumnName = '2006'
假设您的列是文本字符串,则可能对带有通配符的 WHERE LIKE
子句感兴趣:
SELECT COUNT(*) FROM TableName WHERE ColumnName LIKE '%2006%'
答案 3 :(得分:0)
我正在根据粘滞位的答案(我认为这是解决方法)来确定使用GROUP_CONCAT
是否可以完全改善性能。 /4
表示长度为“ 2006”
SELECT
(LENGTH(GROUP_CONCAT(Column_Name))-LENGTH(REPLACE(GROUP_CONCAT(Column_Name),'2006','')))/4
AS Count_String
FROM YourTable;