Используя объединение и количество (*) вместе в SQL-запросе

Это - замечательный язык, но этому наносят вред, потому что (по-моему, как бизнес-владелец программного обеспечения и программист) существует очень немного коммерческих пакетов Lisp и некоторые, которые являются там спросом сбор во время выполнения (потому что надлежащий пакет Lisp может использоваться конечными пользователями для записи программ Lisp также).

я использую Стальной язык Common LISP Банка для разработки прототипа кода в соответствии с Windows и Linux, и я люблю его - но я никогда не считал бы поставку продукта записанной с ним. Нет никакого простого способа настроить доступ одиночного нажатия к программам, так, чтобы конечный пользователь никогда не сталкивался с подсказкой Lisp. Нет никакого способа поставить скомпилированный продукт так, чтобы пользователь не мог демонтировать его, внести некоторые изменения, чтобы удалить Ваше имя и продать его в качестве его собственного. Я видел упоминание о системах Lisp, что в обоих из них можно выполнить, но они - коммерческие, где необходимо платить взносы для каждого конечного пользователя программы, которая смешна.

Lisp может добиться признания однажды (и я пылко надеюсь, что он делает), но это еще не жизнеспособно для большей части коммерческого программного обеспечения. Единственное исключение - что-то, где это всегда будет работающим на системах, что Вы имеете полный контроль, как веб-сервер (и я только услышал о паре компаний с помощью него даже для этого).

40
задан David Božjak 12 August 2009 в 14:48
поделиться

3 ответа

SELECT tem.name, COUNT(*) 
FROM (
  SELECT name FROM results
  UNION ALL
  SELECT name FROM archive_results
) AS tem
GROUP BY name
ORDER BY name
75
ответ дан 27 November 2019 в 01:24
поделиться

Ваша цель ...

  1. Подсчитать все экземпляры «Боб Джонс »в обеих таблицах (например)
  2. Для подсчета всех экземпляров« Боб Джонс »в Результаты в одной строке и все экземпляры "Боба Джонса" в Archive_Results в отдельной строке?

Предполагая, что это №1, вам нужно что-то вроде ...

SELECT name, COUNT(*) FROM
(SELECT name FROM Results UNION ALL SELECT name FROM Archive_Results)
GROUP BY name
ORDER BY name
7
ответ дан 27 November 2019 в 01:24
поделиться

Если у вас есть поддерживающие индексы и относительно большое количество счетчиков, что-то вроде этого может быть значительно быстрее, чем предлагаемые решения:

SELECT name, MAX(Rcount) + MAX(Acount) AS TotalCount
FROM (
  SELECT name, COUNT(*) AS Rcount, 0 AS Acount
  FROM Results GROUP BY name
  UNION ALL
  SELECT name, 0, count(*)
  FROM Archive_Results
  GROUP BY name
) AS Both
GROUP BY name
ORDER BY name;
9
ответ дан 27 November 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: