5

以下のような学生テーブルがあります

Rajesh Kumar
Nagendra Prasad
Bharath kumar
Raghav Kumar
Abhnav Bindhra

名前が「kumar」と「Prasad」の生徒数をカウントするクエリを作成する必要があります。

Kumar   3
Prasad  1

それ、どうやったら出来るの?次のクエリを試しましたが、groupby 句に何を配置すればよいか疑問です。

 Select Name,count(Name) from Student where 
    Name LIKE  ('%Kumar%')
    or Name LIKE  ('%Prasad%')
    group by ???
4

4 に答える 4

6
select  FindName 
,       count(*)
from    (
        select  case
                when Name like '%Kumar%' then 'Kumar'
                when Name like '%Prasad%' then 'Prasad'
                end as FindName
        from    Student
        ) as SubQueryAlias
where   FindName is not null
group by
        FindName
于 2013-06-25T09:31:14.320 に答える
2

次の SQL クエリを試すことができます。

select SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name)) as lname, count(name)
from Student
where name like '%kumar%' or name like '%Prasad%'
group by SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name));

CHARINDEXが機能しない場合は、任意の SQL 関数を使用して のインデックスを返すことができます<space>

これは、コピペのソリューションではなく、出発点と考えてください。

于 2013-06-25T09:39:42.207 に答える
1

CASE 式の別のオプション

SELECT CASE WHEN Name LIKE ('%Kumar%') THEN 'Kumar' ELSE 'Prasad' END AS Name, 
       COUNT(*) AS cnt
FROM Student
WHERE Name LIKE  ('%Kumar%')  OR Name LIKE ('%Prasad%')
GROUP BY CASE WHEN Name LIKE ('%Kumar%') THEN 'Kumar' ELSE 'Prasad' END

SQLFiddle の例を参照してください

于 2013-06-25T09:44:40.710 に答える
0

Mysql は正規表現をサポートしています。

Select Name,count(Name) from Student where Name  REGEXP ('Kumar|Prasad') group by Name  REGEXP ('Kumar|Prasad');
于 2014-01-06T10:19:11.693 に答える