0

ヘルプデスクシステムでチケットを確認するためのクエリを作成しようとしています。件名フィールドまたは説明フィールドのいずれかで「メール」などのいくつかのキーワードを検索し、各キーワードの数を返したいと思います。以下はサンプルテーブルです。カテゴリ行もありますが、適切に管理されていなかったため、ほとんどのフィールドが空になっています。

  ID |       Subject         | Description
-----+-------------------------------------
   1 | hellloooo             | can't send email
   2 | email down?           | can't get to intranet
   3 | Phone trouble         | can't check voicemail
   4 | Using my phone        | I don't know how
   5 | Need new mouse        | please replace
   6 | Mouse acting funny    | n/a
   7 | Intranet won't Load   | what's this plug do?
   8 | not getting voicemail | why not?

そして、私は次のようなものを返したいです

Category   |   # of tickets
---------------------------
Email      |   3
Phone      |   2
Intranet   |   2

これを行う最も簡単な方法は何でしょうか?

4

2 に答える 2

1

RDBMSを指定しませんでしたが、SQLServerでは次のように機能します

;with cte as
(
  select 'Email' Category
  UNION ALL
  select 'Phone'
  UNION ALL
  select 'Intranet'
)
select category, count(*)
from cte c
inner join tickets t
  on t.subject like '%' + c.category + '%'
  or t.description like '%' + c.category + '%'
group by category

SQL FiddlewithDemoを参照してください

クエリを実行するカテゴリのリストが長い場合は、別のテーブルに保存してテーブルに参加することを検討してください。

Sqlite用に編集します。CTEがないため、次の方法で例を実行できます(SQLiteで連結するために正しい構文を使用するように更新されました)。

select category, count(*)
from 
(
  select 'Email' Category
  UNION ALL
  select 'Phone'
  UNION ALL
  select 'Intranet'
) c
inner join tickets t
  on t.subject like '%' || c.category || '%'
  or t.description like '%' || c.category || '%'
group by category

SQL FiddlewithDemoを参照してください

于 2012-08-22T19:01:24.000 に答える
0

Microsoft SQL Serverを使用して、次のようなことを行う場合があります。

DECLARE @CategoryList TABLE (Category VARCHAR(MAX))

INSERT INTO @CategoryList VALUES ('Email')
INSERT INTO @CategoryList VALUES ('Phone')
INSERT INTO @CategoryList VALUES ('Intranet')

SELECT Category, COUNT(*) AS NumberOfTickets
FROM Tickets
INNER JOIN @CategoryList CategoryList ON Tickets.Subject LIKE '%' + CategoryList.Category + '%' OR Tickets.Description LIKE '%' + CategoryList.Category + '%'
GROUP BY Category
于 2012-08-22T18:57:24.760 に答える