2016-03-06 2 views
-3

У меня есть эта таблица (это короткая версия)Используя счетчик, чтобы найти количество вхождений значения с где положение

item_id computer_type operating_system 
    1   PC    UNIX 
    2   DESKTOP  OSX 
    3   LAPTOP   WINDOWS 
    4   DESKTOP  UNIX 
    5   PC    OSX 
    6   PC    WINDOWS 

Как бы я использовать SQL для определения количества компьютеров «настольных» в таблицу, которая работает с 'unix'?

+2

Безразлично Вам будет намного легче, пожалуйста, покажите, что вы пробовали? – sgeddes

+0

SELECT computer_type, operating_system, count (*) FROM computers WHERE computer_type = 'DESKTOP' и operating_system = 'UNIX' GROUP BYcomputer_type, operating_system; –

+0

Это то, что я считал самым близким, но я получил имена столбцов без данных в таблице. –

ответ

0
Select count(1) 
from table 
where computer_type = 'DESKTOP' 
and operating_system = 'UNIX' 
0
SELECT computer_type, 
     operating_system, 
     count(*) 
FROM computers 
WHERE computer_type = 'DESKTOP' 
AND operating_system = 'UNIX' 
GROUP BY 
     computer_type, 
     operating_system; 

Это предполагает, что COMPUTER_TYPE и OPERATING_SYSTEM столбцы имеют тип VARCHAR2 (который вы можете увидеть, если вы используете команду DESCRIBE computers;). Если они имеют тип CHAR, то они будут правы, дополненное пробелами, и вы можете использовать это:

SELECT computer_type, 
     operating_system, 
     count(*) 
FROM computers 
WHERE RTRIM(computer_type) = 'DESKTOP' 
AND RTRIM(operating_system) = 'UNIX' 
GROUP BY 
     computer_type, 
     operating_system; 

Или, вы можете прямо подушечка строковые литералы вне соответствующей длины:

SELECT computer_type, 
     operating_system, 
     count(*) 
FROM computers 
WHERE computer_type = 'DESKTOP  ' 
AND operating_system = 'UNIX   ' 
GROUP BY 
     computer_type, 
     operating_system;