-1

私のテーブルは以下のようになります。

ID  Task
1   Search
2   Basic
3   Natural search
4   Query1
5   query2
6   Query3
7   Sample1
8   sample2
9   test1
10  test2
11  test3

ここで、task=(search,Basic,Natural serach) および task=(query1,Query2,Query3) および task=(sample1,sample) および task=(test1,test2,test3) のタスク列の値をカウントする必要があります。 . のようにすべてのカウントを個別に保存したい

count(search),count(Query),count(sample),count(test)
4

2 に答える 2

1

結果を行として取得する場合:

SELECT 'Search' AS Task, COUNT(ID) AS Counts
  FROM MyTable
 WHERE task IN('search', 'Basic', 'Natural search')
UNION ALL
SELECT 'Query', COUNT(ID)
  FROM MyTable
 WHERE task IN('Query1', 'Query2', 'Query3')
UNION ALL
SELECT 'Sample', COUNT(ID)
  FROM MyTable
 WHERE task IN('sample1', 'sample2')
UNION ALL
SELECT 'Test', COUNT(ID)
  FROM MyTable
 WHERE task IN('test1', 'test2', 'test3');

出力:

|   TASK | COUNTS |
|--------|--------|
| Search |      3 |
|  Query |      3 |
| Sample |      2 |
|   Test |      3 |

結果を列として表示する場合:

SELECT
  SUM(CASE WHEN Task = 'Search' THEN  1 
            WHEN Task = 'Basic' THEN  1 
            WHEN Task = 'Natural search' THEN  1 
            ELSE 0 END) AS SEARCH 
  ,SUM(CASE WHEN Task = 'Query1' THEN  1 
            WHEN Task = 'Query2' THEN  1 
            WHEN Task = 'Query3' THEN  1 
            ELSE 0 END) AS Query 
  ,SUM(CASE WHEN Task = 'Sample1' THEN  1 
            WHEN Task = 'sample2' THEN  1 
            ELSE 0 END) AS Sample
  ,SUM(CASE WHEN Task = 'test1' THEN  1 
            WHEN Task = 'test2' THEN  1 
            WHEN Task = 'test3' THEN  1 
            ELSE 0 END) AS Test
FROM MyTable;

出力:

| SEARCH | QUERY | SAMPLE | TEST |
|--------|-------|--------|------|
|      3 |     3 |      2 |    3 |

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

于 2013-09-18T07:12:52.113 に答える
0

結果を1行で表示するには、次のように試してください。

SELECT
(SELECT COUNT(*)
FROM Table
WHERE task = 'search' or task = 'Basic' or task = 'natural search') AS CountSearch,
(SELECT COUNT(*)
FROM Table
WHERE task = 'Query1' or task = 'Query2' or task = 'Query3') AS CountQuery,
(SELECT COUNT(*)
FROM Table
WHERE task = 'sample1' or task = 'sample2') AS CountSample,
(SELECT COUNT(*)
FROM Table
WHERE task = 'test1' or task = 'test2' or task = 'test3') AS CountTest

そして、いくつかの行の結果については次のとおりです。

SELECT 'CountSearch', COUNT(*)
FROM Table
WHERE task = 'search' or task = 'Basic' or task = 'natural search'
UNION ALL
SELECT 'CountQuery', COUNT(*)
FROM Table
WHERE task = 'Query1' or task = 'Query2' or task = 'Query3'
UNION ALL
SELECT 'CountSample', COUNT(*)
FROM Table
WHERE task = 'sample1' or task = 'sample2'
UNION ALL
SELECT 'CountTest', COUNT(*)
FROM Table
WHERE task = 'test1' or task = 'test2' or task = 'test3'

sql-statement でかっこを列名として使用できないため、列の名前を変更しました。

于 2013-09-18T06:56:44.790 に答える