SQL отличается и считать - PullRequest
20 голосов
/ 27 мая 2009

У меня есть запрос, в котором я хочу получить разные даты, номера телефонов, связанные с этими датами, и количество телефонных номеров на дату.

Например, у меня есть база данных с датами и номерами телефонов, и я хочу, чтобы результат был

9/2005      5554446666    3
9/2005      4445556666    1
10/2005     1112223333    1
11/2005     2223334444    2

Я могу получить даты и количество по этому запросу:

SELECT DISTINCT date, count(phone) AS count
FROM calls
GROUP BY date

То, что я не могу получить, это номер телефона, на который рассчитывает счет. Я думаю, что мне нужна какая-то агрегатная функция для получения единственного экземпляра списка уникальных значений, но First () и несколько других выдают только ошибку SQL. Нужен ли подзапрос?

Ответы [ 5 ]

30 голосов
/ 27 мая 2009
SELECT date, PhoneNumber, count(phone) AS count
    FROM calls
    GROUP BY date, PhoneNumber 

должен сделать это, я думаю

8 голосов
/ 27 мая 2009

Вы можете попробовать что-то вроде

SELECT Date, Phone, Count(*) As Count From Calls GROUP BY Date, Phone

Это даст вам подсчет каждого телефонного номера на каждую дату, сколько раз этот номер появлялся в эту дату.

4 голосов
/ 27 мая 2009
SELECT date, phone, count(phone) AS count FROM calls GROUP BY date, phone

(Вам не нужно DISTINCT с GROUP BY.)

2 голосов
/ 27 мая 2009

Это потому, что вы группируете по дате , а не по телефону .

В одной группе дат может быть три разных числа, и для SQL невозможно определить, какое из них вы хотите.

0 голосов
/ 19 декабря 2013

Попробуйте следующее

Количество (телефон) ОТ звонков

Даст вам отчетливый граф.

...